
    d &                      d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZmZ d dlZd dlZd dl Z d dl!m"Z" d d	l#m$Z$ d dl%Z&d d
l%m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z>m?Z? d dl@mAZA d dlBmCZC d dlDmEZE d dlFmGZG d dlHmIZI d dlJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZa d dlbmcZcmdZdmeZe d dlfmgZgmhZhmiZi 	 d dljZkn# el$ r Y nw xY w	 d dlmZmd dlnmoZp n# el$ r Y nw xY wdZq	 d dlrmsZs dZqn# el$ r dZsY nw xY wdZt	 d dlumvZvmwZw dZtn# el$ r dZwY nw xY wej	        dk    Zx ey            Zz eId          Z{erd d l|m}Z}m~Z~ dd#Zdd$Zdd%Zdd&Zdd'Zdd(Zdd)Zdd*Zdd+Zdd,Zdd-Z G d. d/          Z G d0 d1          Z G d2 d3          Z G d4 d5e          Z G d6 d7e          Z ej                    Zej        	 ddd>            Zej        	 dddB            Z G dC dDe          Ze[ G dE dFe                      Ze[ G dG dH                      Ze[eWe j                            dI           G dJ dKe                                              Zea G dL dMe                      Zea G dN dOe                      Zea G dP dQe                      Z G dR dSe          Ze j                            et dTU           G dV dWe                      Ze j                            et dTU           G dX dYe                      Ze j                            et dTU           G dZ d[e                      ZeaeXdd]                        Ze_ G d^ d_ee                      Ze_ G d` daee                      Ze_ G db dcee                      Ze[ G dd deee                      Ze[ G df dgee                      Ze` G dh diee                      ZeYe[e j                            dj           G dk dle                                              ZeYe[ G dm dn                                  ZeY G do dpe                      ZeYeWe j                            dI           G dq dre                                              Z e j        g dst          du             Z e j        dvdwgt          dx             Z e j        dydgt          dz             Z e j        ddgt          d{             Z e j        ddygt          d|             Z e j        g d}t          d~             Zd ZeWe j                            dj          d                         Ze[eWdd                        Ze[eWdd                        Ze`eW G d d                                  ZeWe_e[ G d de                                              Ze`e]e j                            d           G d d                                              ZeUe`e] G d de                                              Ze_e^ G d dee                                  Ze\e j                            d           G d d                                  Z G d d          Z G d d          Ze[ G d d                      Ze` G d d                      Zea G d d                      Ze`dd            Ze`dd            Ze`dd            Zd Ze`e j                            dee          dd                        ZeVe`e j                            dee          e j                            dddg          dd                                                ZeVe`e j                            dec          e j                            dg d          dd                                                Ze`e j                            dee          dd                        Ze`e j                            dee          e j                            dddg          dd                                    Ze`e j                            ded          e j                            dg d          dd                                    Ze j                            dddg          dd            Zeadd            Zeadd            ZeaeXe j                            dI          dd                                    ZeYe[dd                        ZeaeWe j                            dddi ddiddidddg          dd                                    ZeaeWe j                            dddi ddiddidddg          e j                            d          dd                                                Zd Ze[dd            Ze_dd            ZeYdd            Ze[e j                            deej        f          dd                        Zeae[ G d dæ                                  Ze[eWdĄ                         ZdS )    )annotationsN)Iterator)	ExitStack)BytesIO)Path)TYPE_CHECKINGAnyFinalcast)Version)OutOfBoundsDatetime)		DataArrayDatasetbackendsload_dataarrayload_datasetopen_dataarrayopen_datasetopen_mfdatasetsave_mfdataset)robust_getitem)H5netcdfBackendEntrypoint)_nc3_dtype_coercions)NetCDF4BackendEntrypoint_extract_nc4_variable_encoding)PydapDataStore)ScipyBackendEntrypoint)check_vlen_dtypecreate_vlen_dtype)SerializationWarning)encode_dataset_coordinates)indexing)set_options)
array_type)	arm_xfailassert_allcloseassert_array_equalassert_equalassert_identicalassert_no_warningshas_daskhas_netCDF4	has_scipymocknetworkrequires_cftimerequires_daskrequires_fsspecrequires_h5netcdfrequires_irisrequires_netCDF4requires_pseudonetcdfrequires_pydaprequires_pyniorequires_scipyrequires_scipy_or_netCDF4requires_zarr)_ALL_CALENDARS_NON_STANDARD_CALENDARS_STANDARD_CALENDARS).create_append_string_length_mismatch_test_datacreate_append_test_datacreate_test_dataF)KVStoreT)DirectoryStoreV3	KVStoreV3win32dask)T_NetcdfEngineT_NetcdfTypesreturnr   c                    t          t          j                            t          j                            t
                    d|           g|R i |S )Ndata)r   ospathjoindirname__file__)nameargskwargss      :lib/python3.11/site-packages/xarray/tests/test_backends.pyopen_example_datasetrU      sQ    
RW__X..==@D  HN      c                6    t          d | D             g|R i |S )Nc                    g | ]E}t           j                            t           j                            t                    d |          FS )rK   )rL   rM   rN   rO   rP   ).0rQ   s     rT   
<listcomp>z*open_example_mfdataset.<locals>.<listcomp>   s8    QQQ4bgooh//	>	>QQQrV   )r   )namesrR   rS   s      rT   open_example_mfdatasetr\      sA    QQ5QQQ	     rV   c                     t          j        t           j        t           j        dddgt           j                  } ddt          j        d          dd}t	          d	d
| i |fi          S )N
   333333$@ffffff$@dtype皙?i2)
_FillValue
add_offsetscale_factorrb   xt)nparraynanfloat32r   )ri   encodings     rT   create_masked_and_scaled_datarp      se    
"&"&"dD1DDDA
3	 H C#q"h/0111rV   c                     ddt          j        d          d} t          ddt          j        g dt           j                  | fi          S )	Nrc   r^   rd   )rf   rg   rh   ri   rj   rc   rc   r         ra   )rk   rn   r   rl   int16
attributess    rT   %create_encoded_masked_and_scaled_datarx      sS     ""bjQTooVVJ	sBH...bh???LM  rV   c                     ddddt          j        d          d} t          j        ddd	d
t           j        gt           j                  }t	          dd|i | fi          S )N   truei1r^   rd   rf   	_Unsignedrb   rg   rh         $@r_   333336@6@ra   ri   rj   rk   rn   rl   rm   r   ro   ri   s     rT   "create_unsigned_masked_scaled_datar      sf    
3 H 	$dD"&1DDDAC#q"h/0111rV   c                     dddt          j        d          d} t          j        g dd          }t          d	d
|| fi          S )Nrc   r{   r^   rd   rf   r~   rg   rh   r   rs      irc   r|   ra   ri   rj   rk   rn   asarrayr   rw   sbs     rT   *create_encoded_unsigned_masked_scaled_datar      s[     
3	 J 
)))	6	6	6BC#r:./000rV   c                     ddddt          j        d          d} t          j        ddd	d
t           j        gt           j                  }t	          dd|i | fi          S )Nrz   Tr|   r^   rd   r}   r   r_   r   r   ra   ri   rj   r   r   s     rT   &create_bad_unsigned_masked_scaled_datar      sf    
3 H 	$dD"&1DDDAC#q"h/0111rV   c                     dddt          j        d          d} t          j        g dd          }t          d	d
|| fi          S )Nrc   Tr^   rd   r   r   r|   ra   ri   rj   r   r   s     rT   .create_bad_encoded_unsigned_masked_scaled_datar      s[     
3	 J 
)))	6	6	6BC#r:./000rV   c                     ddddt          j        d          d} t          j        ddd	t           j        gt           j        
          }t	          dd|i | fi          S )Nfalser|   r^   rd   r}   g      r_   r   ra   ri   rj   r   r   s     rT    create_signed_masked_scaled_datar      sd    
3 H 	$dBF+2:>>>AC#q"h/0111rV   c                     dddt          j        d          d} t          j        g dd          }t          d	d
|| fi          S )Nr   r   r^   rd   r   )irs   r   r   r|   ra   ri   rj   r   r   s     rT   (create_encoded_signed_masked_scaled_datar      s[     
3	 J 
(((	5	5	5BC#r:./000rV   c                 6    ddi} t          ddg d| fi          S )Nunits-ri   rj   )TFFTr   rv   s    rT   create_boolean_datar      s,    3JC#999:FGHHHrV   c                      e Zd ZddZdS )
TestCommonrI   Nonec                    G d dt                      G fdd          } |dg          }t          j                  5  |d          d d d            n# 1 swxY w Y   |d         dk    sJ t          |dd          }|dk    sJ d S )Nc                      e Zd ZdS )>TestCommon.test_robust_getitem.<locals>.UnreliableArrayFailureN__name__
__module____qualname__ rV   rT   UnreliableArrayFailurer      s        DrV   r   c                  "    e Zd ZddZ fdZdS )7TestCommon.test_robust_getitem.<locals>.UnreliableArrayrs   c                "    || _         || _        d S N)rl   failures)selfrl   r   s      rT   __init__z@TestCommon.test_robust_getitem.<locals>.UnreliableArray.__init__   s    "
 (rV   c                X    | j         dk    r| xj         dz  c_         | j        |         S )Nr   rs   )r   rl   )r   keyr   s     rT   __getitem__zCTestCommon.test_robust_getitem.<locals>.UnreliableArray.__getitem__   s2    =1$$MMQ&MM00z#&rV   Nrs   )r   r   r   r   r   )r   s   rT   UnreliableArrayr      sB        ) ) ) )' ' ' ' ' ' 'rV   r   r   )catchinitial_delay)	Exceptionpytestraisesr   )r   r   rl   actualr   s       @rT   test_robust_getitemzTestCommon.test_robust_getitem   s   	 	 	 	 	Y 	 	 			' 		' 		' 		' 		' 		' 		' 		' 		' 		'  $$]122 	 	!HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Qx1}}}}q0FVWXXX{{{{{{s   	AA ANrI   r   )r   r   r   r   r   rV   rT   r   r      s(             rV   r   c                  6    e Zd ZU dZded<   edd            ZdS )	NetCDF3Only)NETCDF3_CLASSICNETCDF3_64BITztuple[T_NetcdfTypes, ...]netcdf3_formatsrI   r   c                   t          j        t          | j                  D ]\  }}|dk    rt	          j        |          j        }t	          j        ddd|g|          }t          dd|i fi          }t          d	          5 }t          j        t          d
          5  |                    ||           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   dS )z.Failing dtype coercion should lead to an errorboolr   rs   rt   ra   ri   rj   Fallow_cleanup_failurezcould not safely castmatchformatN)	itertoolsproductr   r   rk   iinfomaxrl   r   create_tmp_filer   r   
ValueError	to_netcdf)r   rb   r   maxvalri   dsrM   s          rT   test_dtype_coercion_errorz%NetCDF3Only.test_dtype_coercion_error  sp    '. $"6
 
 	6 	6ME6  Xe__(F!Q6*%888A#Q|,--B u=== 6]:5LMMM 6 6LLfL5556 6 6 6 6 6 6 6 6 6 6 6 6 6 66 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6s6   CC7CCC
CCC	!C	Nr   )r   r   r   r   __annotations__r9   r   r   rV   rT   r   r     sE         1UOUUUU6 6 6 ^6 6 6rV   r   c                  v   e Zd ZU dZded<   dZded<   d Zej        	 d0d            Z	ej        	 d0d	            Z
d
 Zej        d             Zd1dZd1dZd Zd1dZd1dZd1dZd1dZej                            d          d1d            Zd1dZej                            d          d1d            Zd1dZd1dZd1dZed1d            Zed1d            Z d1dZ!d1dZ"d1d Z#d1d!Z$d1d"Z%d1d#Z&d1d$Z'd1d%Z(d1d&Z)ej        *                    d'(          d1d)            Z+d1d*Z,d1d+Z-d, Z.d1d-Z/d1d.Z0d1d/Z1dS )2DatasetIOBaseNzT_NetcdfEngine | NoneenginezT_NetcdfTypes | Nonefile_formatc                    t                      r   NotImplementedErrorr   s    rT   create_storezDatasetIOBase.create_store(  s    !###rV   Fc              #     K   |i }|i }t          |          5 } | j        ||fi |  | j        |fi |5 }|V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S Nr   r   saveopenr   rK   save_kwargsopen_kwargsr   rM   r   s          rT   	roundtripzDatasetIOBase.roundtrip+  "      KK3HIII 	TDIdD00K0004//;// 2              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	3   A"A
A"
A	A"A	A""A&)A&c              #  8  K   |i }|i }t          |          5 }t          |j                  D ]'\  }}|dk    rdnd} | j        ||g         |fd|i| ( | j        |fi |5 }	|	V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   awmode)r   	enumerate	variablesr   r   )
r   rK   r   r   r   rM   ir   r   r   s
             rT   roundtrip_appendzDatasetIOBase.roundtrip_append8  s`      KK3HIII 	T#DN33 G G3!eess	$u+tFF$F+FFFF4//;// 2              		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   AB&A7+B7A;	;B>A;	?BBBc                8     |j         |f| j        | j        d|S )N)r   r   )r   r   r   r   datasetrM   rS   s       rT   r   zDatasetIOBase.saveH  s8     w 
T-=
 
AG
 
 	
rV   c              +  l   K   t          |fd| j        i|5 }|V  d d d            d S # 1 swxY w Y   d S )Nr   )r   r   r   rM   rS   r   s       rT   r   zDatasetIOBase.openM  s      $==t{=f== 	HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   )--rI   r   c                    t                      }g dddif|d<   g df|d<   g df|d<   |                     |          5 }t          ||           d d d            d S # 1 swxY w Y   d S )	Ng    eAr   zunits of awesome	float_vars   foobar	bytes_varfoobar
string_varrA   r   r)   r   expectedr   s      rT   test_zero_dimensional_variablez,DatasetIOBase.test_zero_dimensional_variableR  s    #%%!#UW6H,I J!#Y"$h^^H%% 	/Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AA!Ac                   t                      }|                                 5 }|                    |           t          j        |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   )rA   r   dump_to_storexr	decode_cfr&   )r   r   storer   s       rT   test_write_storezDatasetIOBase.test_write_storeZ  s   #%%   	2E""5))) e$$ 2&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2		2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s5   *BA*B*A.	.B1A.	2BB	Bc                L   |j         D ]}|j         |         j        }t          | t                    rBt	          |          t
          v r,t          j        t
          t	          |                             }|j         |         j        }h d}||k    s|j        |v r	|j        |v sJ d S )N>   OSU)r   rb   
isinstancer   strr   rk   kind)r   r   r   kexpected_dtypeactual_dtypestring_kindss          rT   check_dtypes_roundtrippedz'DatasetIOBase.check_dtypes_roundtrippedc  s    # 	 	A%/28N 4--U''+???!#*>s>?R?R*S!T!T!+A.4L*??L!\11#|33 %5555	 	rV   c                    t                      }|                     |          5 }|                     ||           t          ||           d d d            d S # 1 swxY w Y   d S r   )rA   r   r  r)   r   s      rT   test_roundtrip_test_dataz&DatasetIOBase.test_roundtrip_test_datav  s    #%%^^H%% 	/**8V<<<Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   'AAAc                    t                      t          j        d fd	            }t          j        t
                    5   |            5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 }|                                 d d d            n# 1 swxY w Y    |g d          5 }|d                                          d d d            n# 1 swxY w Y                                  5 }|                                }d d d            n# 1 swxY w Y   t          |           d S )Nc              3  V  K   | }                                5 }|j                                        D ]\  }}|j        ||j        v k    sJ |V  |j                                        D ]\  }}|| v r	|j        sJ t          |           d d d            d S # 1 swxY w Y   d S r   )r   r   items
_in_memorydimsr)   )varsr   r  vr   r   s       rT   assert_loadsz-DatasetIOBase.test_load.<locals>.assert_loads  s     |)) 3V",2244 > >DAq<A,<=====",2244 , ,DAqDyy |+++ 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   A4BB"%B")var1dim1dim2r  r   )	rA   
contextlibcontextmanagerr   r   AssertionErrorloadr   r)   )r   r  r   r   r   s   `   @rT   	test_loadzDatasetIOBase.test_load|  s}   #%%		"	3 	3 	3 	3 	3 	3 
#	"	3 ]>** 	 	 2              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 \^^ 	rGGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 \22233 	rvJOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ^^H%% 	WWYYF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	6*****sl   A3AA3A 	 A3#A 	$A33A7:A7B))B-0B-C((C,/C,D))D-0D-c                   t                      }|                     |          5 }|j                                        D ]\  }}|j        ||j        v k    sJ |                                }|j                                        D ]\  }}|j        ||j        v k    sJ |j                                        D ]}|j        sJ t          ||           t          ||           d d d            d S # 1 swxY w Y   d S r   )	rA   r   r   r  r  r  computevaluesr)   )r   r   r   r  r  computeds         rT   test_dataset_computez"DatasetIOBase.test_dataset_compute  s\   #%%^^H%% 	1(..00 : :1|V[(899999~~''H(..00 : :1|V[(899999'..00 $ $|####Xv...Xx000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   C C11C58C5c                   t           st          j        d           t          dddgfi          }|                     |t
                    5 }|5  t          j        |          }d d d            n# 1 swxY w Y   t          j        |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S Nz+pickling requires dask for SerializableLockfoori   *   r   
r+   r   xfailr   r   
ON_WINDOWSpickledumpsloadsr)   )r   r   roundtripped
raw_pickleunpickled_dss        rT   test_picklezDatasetIOBase.test_pickle  s    	HLFGGGEC";/00^^HJ^GG 	9< 8 8#\,77
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 j)) 9\ <8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9		9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9sZ   CA0$C0A4	4C7A4	8CB, C,B0	0C3B0	4CCC&ignore:deallocating CachingFileManagerc                   t           st          j        d           t          dddgfi          }|                     |t
                    5 }|5  t          j        |d                   }d d d            n# 1 swxY w Y   t          j        |          }t          |d         |           d d d            d S # 1 swxY w Y   d S r)  r,  )r   r   r2  r3  	unpickleds        rT   test_pickle_dataarrayz#DatasetIOBase.test_pickle_dataarray  s?    	HLFGGGEC";/00^^HJ^GG 	9< ? ?#\,u*=>>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Z00IXe_i888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s6   B8A6*B86A:	:B8=A:	>-B88B<?B<c                f   t          ddg dfi          }|                     |          5 }t          |j        j        j        t          j                  sJ |j        j        j        rJ |j        j	         |j        j        j        sJ 	 d d d            n# 1 swxY w Y   |                     |ddi          5 }t          |j        j        j        t          j
                  sJ |j        j        j        rJ |j        j	         |j        j        j        rJ 	 d d d            d S # 1 swxY w Y   d S )Nr*  ri            cacheFr   )r   r   r	  r*  variable_datar"   MemoryCachedArrayr  r%  CopyOnWriteArrayr   s      rT   test_dataset_cachingz"DatasetIOBase.test_dataset_caching  s   EC#3455^^H%% 	2fj179STTTTTz*5555J:&11111		2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 ^^H7E2B^CC 	6vfj179RSSSSSz*5555Jz*55555		6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s%   ABBB:AD&&D*-D*c                    t          d dddgddggfi          }|                     |          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nri   yr   rs   rt      r   r   r)   r   s      rT   test_roundtrip_None_variablez*DatasetIOBase.test_roundtrip_None_variable  s    D:AA/?"@ABB^^H%% 	/Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AAAc                   t          j        g dt                    }t          j        t           j        t           j        dddgt                    }t          j        g dt                    }t          j        ddt           j        gt                    }t          j        g d	t                    }t          j        d
dt           j        gt                    }t          j        t           j        t           j        gt                    }t	          d|fd|fd|fd|fd|fd|fd|fg t           j        fd          }|                    d          }	|                     |          5 }
	 t          |	|
           n6# t          $ r) d|	d         d<   d|	d         d<   t          |	|
           Y nw xY wd d d            d S # 1 swxY w Y   d S )N)        rM        ?       @      @ra   rN  rO  rP  )   ab   cdef   grQ  rR  )abcdefgrT  rU  r   bc)floatsfloats_nansbytes
bytes_nansstringsstrings_nansall_nansrm   TdeeprV   r\  rc    r^  )	rk   rl   objectrm   r   copyr   r)   r   )r   rY  rZ  bytes_r\  r]  r^  r_  originalr   r   s              rT   test_roundtrip_object_dtypez)DatasetIOBase.test_roundtrip_object_dtype  s   3336BBBhS#>fMMM000???Xugrv6fEEE
(...f===xvrv 6fEEE8RVRV,F;;;- #[1v"J/>!$l 3 (OBF|	 	
 
 ==d=++^^H%% 	33 62222! 	3 	3 	3 .1&r*/1(, 622222	3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s6   *G ,E=<G =0F0-G /F00G  GGc                    t          ddddgfi          }|                     |          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nri   rj   rT  rU  rJ  r   s      rT   test_roundtrip_string_dataz(DatasetIOBase.test_roundtrip_string_data  s    C#f~!6788^^H%% 	/Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   A		AAc                   t          ddddgfi          }d|d         j        d<   |                     |          5 }t          ||           |d         j        d         dk    sJ 	 d d d            n# 1 swxY w Y   d	|d         j        d<   |                     |          5 }t          ||           |d         j        d         d	k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nri   rj   rT  rU  S1rb   	_Encodingzutf-8ascii)r   ro   r   r)   r   s      rT   (test_roundtrip_string_encoded_charactersz6DatasetIOBase.test_roundtrip_string_encoded_characters  s   C#f~!6788*.w'^^H%% 	@Xv...#;'4?????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ /6{+^^H%% 	@Xv...#;'4?????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s#   *A22A69A6"*CC!Cc                (   t          j        g d          }t          d|f|d         d          }ddddiii}|                     ||	          5 }t	          ||           |j        j        d         dk    sJ 	 d d d            d S # 1 swxY w Y   d S )
N
2000-01-01z
2000-01-02NaTrj   r   rj   t0ro   rt  r   zdays since 1950-01-01r   )pdto_datetimer   r   r)   rt  ro   )r   timesr   rS   r   s        rT   "test_roundtrip_numpy_datetime_dataz0DatasetIOBase.test_roundtrip_numpy_datetime_data  s   BBBCC#uU1X>>??tg/F%GHI^^H&^99 	JVXv...9%g.2IIIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js   )BBBc                   ddl m}  |            }|                                D ]} |ddd           |ddd          g}t          d|f|d         d          }ddd	d
iii}t	          j        |          }t	          j         |ddd          g          }|d         j        }	t          j                    5  |	dv rt          j	        dd           | 
                    ||          5 }
t          |
j        j        |z
            }|t	          j        dd          k                                    sJ |
j        j        d	         dk    sJ |
j        j        d         |	k    sJ t          |
j        j        |z
            }|t	          j        dd          k                                    sJ |
j        j        d	         d
k    sJ |
j        j        d         |	k    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nr   _all_cftime_date_typesrs   rt   rj   rs  ro   rt  r   zdays since 0001-01-01>   standardproleptic_gregorianignorezUnable to decode time axisru  sz%days since 0001-01-01 00:00:00.000000calendar)xarray.tests.test_coding_timesr|  r%  r   rk   rl   r  warningscatch_warningsfilterwarningsr   absrj   timedelta64allro   rt  )r   r|  
date_types	date_typerx  r   rS   expected_decoded_texpected_decoded_t0expected_calendarr   abs_diffs               rT   #test_roundtrip_cftime_datetime_dataz1DatasetIOBase.test_roundtrip_cftime_datetime_data  s   IIIIII++--
#**,, 	N 	NIYq!Q''1a););<Ec5\qBBCCH 4'3J)K"LMF!#%"$(IIaA,>,>+?"@"@ %a 1(** N N$(KKK+H6RSSS^^H&^AA NV"68?5G#GHHH$q#(>(>>CCEEEEE)'2BC C C C "8,Z8<MMMMM"69#36I#IJJH$q#(>(>>CCEEEEE!9-g6:QQQQQ!8,Z8<MMMMMMN N N N N N N N N N N N N N N	N N N N N N N N N N N N N N N	N 	Ns7   81H )C3G)H )G--H 0G-1H  H	H	c                    t          j        g d          }t          d|f|d         d          }|                     |          5 }t	          ||           d d d            d S # 1 swxY w Y   d S )N)1h2hrr  tdr   )r  td0)rv  to_timedeltar   r   r)   )r   time_deltasr   r   s       rT   test_roundtrip_timedelta_dataz+DatasetIOBase.test_roundtrip_timedelta_data8  s    o&9&9&9::4"5k!nMMNN^^H%% 	/Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/   A$$A(+A(c           	         t          ddt          j        ddt          j        gd          fi          }|                     |          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nri   rH  rN  rO  float64ra   )r   rk   rl   pir   r)   r   s      rT   test_roundtrip_float64_dataz)DatasetIOBase.test_roundtrip_float64_data>  s    C#rxc250A'S'S'S!TUVV^^H%% 	/Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   
A((A,/A,c                    t          d          5 }|                     |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nexample_1.nc)rU   r   r(   r   s      rT   test_roundtrip_example_1_netcdfz-DatasetIOBase.test_roundtrip_example_1_netcdfC  s    !.11 	/X)) /V
 Xv.../ / / / / / / / / / / / / / /	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s3   AAAA	A
A	AA"Ac                   t          ddddgfiddgddgfdd	d
gfd          }|                     |          5 }t          ||           d d d            n# 1 swxY w Y   d|d         j        d<   |                     |ddi          5 }|                     |ddi          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr*  ri   r   rs   rt   rI  r   r+     r<  ri   rH  zrH  coordinatesdecode_coordsFr@  )r   r   r)   ro   r   rf  r   r   s       rT   test_roundtrip_coordinatesz(DatasetIOBase.test_roundtrip_coordinatesL  s   S1a&M"1a&bT{#PQSTv$W$W
 
 ^^H%% 	/Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 36 /^^H?E2J^KK 	3x&>     3 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sG   AAA
C$C5CC	CC		CC Cc                   t          ddddgfiddgddgfdd	d
gfd          }|                     |          5 }t          ||           d d d            n# 1 swxY w Y   t          |          \  }}|d         dk    sJ d|j        d<   t          j        t                    5  t          |          \  }}|d         dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr*  ri   r   rs   rt   rI  r   r+  r  r<  r  r  rH  )r   r   r)   r!   attrsr   warnsr    )r   rf  r   _r  s        rT   !test_roundtrip_global_coordinatesz/DatasetIOBase.test_roundtrip_global_coordinates\  s   S1a&M"1a&bT{#PQSTv$W$W
 
 ^^H%% 	/Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ .h775]#s**** ).}%\.// 	1 	11(;;HAu'500000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s#   AAA$!CCCc                2   t          ddd          }t          ddiddi          }t          j        t                    5  |                     |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rs   ri   y zcoordsr  ri   )r   r   r  r    r   r)   )r   rf  r   r   s       rT   %test_roundtrip_coordinates_with_spacez3DatasetIOBase.test_roundtrip_coordinates_with_spacem  s   !"4"4555E1:Qx00\.// 	3 	3)) 3V 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s6   BA4(B4A8	8B;A8	<BBBc                   t                      }|d         j        dk    sJ |                     |          5 }t          ||           |d         j        dk    sJ |                     |          5 }t          ||           |d         j        dk    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nri   r   )r   rb   r   r)   )r   rf  r   actual2s       rT   test_roundtrip_boolean_dtypez*DatasetIOBase.test_roundtrip_boolean_dtypet  sQ   &((}"f,,,,^^H%% 	4Xv...#;$.... '' 47 7333s|)V333334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s5   9B90$B!B9!B%	%B9(B%	)B99B= B=c                |   t                      }|                     |          5 }g dg dt          j        d          d}|                    |          } |j        di |}|d         j        j        rJ t          ||            |j        di |}t          ||           d d d            d S # 1 swxY w Y   d S )Nrs   rt   r   rI  rt   r   rI  r<  r  r  dim3r  r   )rA   r   rk   arangeiselrA  r  r)   r   	in_memoryon_diskindexersr   r   s         rT   test_orthogonal_indexingz&DatasetIOBase.test_orthogonal_indexing  s   $&&	^^I&& 
	/' )		<<<STVVH ~~h//H!W\--H--Ff~.9999Xv... "W\--H--FXv...
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/s   B B11B58B5c                   
 t                      
                     
          5 }t          g dd          t          g dd          d}
                    |          } |j        di |}|d         j        j        rJ t          ||                                            |j        di |}t          ||           d d d            n# 1 swxY w Y   
 fd}t          dd	gd
dgddggddg          t          ddgddgd
d
ggddg          dt          ddgdg          t          ddgdg          dg} ||           t          dd	gd
dgddggddg          t          d d          dg} ||           ddidt          dd	gd
dgddggddg          idt          d d d
          ig} ||           ddidt          dd	gd
dgddggddg          idddg}	 ||	           d S )N)r   rt   r   r   r  )r   rt   rI  )r  r  r  c                B                                  5 }|d         }d         }| D ]:}|                    |          }|                    |          }|j        j        rJ ;t	          ||                                           d d d            d S # 1 swxY w Y   d S )Nvar3r   r  rA  r  r)   r!  )r  r  r   r   indr  r   s        rT   multiple_indexingzADatasetIOBase.test_vectorized_indexing.<locals>.multiple_indexing  s    	** :g $V,# : :C#[[--F'}}S11H%99999 6;;==999: : : : : : : : : : : : : : : : : :s   A0BBBr   r>  rt   r=  rI  r<  rW  r  rs   r  r  rX  r   rW  r^   r  r  r   )	rA   r   r   r  rA  r  r)   r!  slice)r   r  r  r   r   r  	indexers2	indexers3	indexers4	indexers5r  s   `         @rT   test_vectorized_indexingz&DatasetIOBase.test_vectorized_indexing  s   $&&	^^I&& 	/'!)))#666!)))#666 H !~~h//H!W\--H--Ff~.9999Xv{{}}555 "W\--H--FXv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/
	: 
	: 
	: 
	: 
	: 
	: "Aq6Aq6Aq6":#sLLL!Aq6Aq6Aq6":#sLLL  QF#///iAcU6S6S6STT
	 	)$$$
 "Aq6Aq6Aq6":#sLLLdB 
	 	)$$$ QKYAAA7sCjIIIJ%dA&&'
	
 	)$$$ QKYAAA7sCjIIIJ!
	
 	)$$$$$s   BCCCz>zarr without dask handles negative steps in slices incorrectlyreasonc                :    t           rdi ind t                       fd}t          ddgddgddggd	d
g          t          ddd          dg} ||           t          ddgddgddggd	d
g          t          ddd          dg} ||           d S )Nchunksc                F                                  5 }|d         }d         }| D ]:}|                    |          }|                    |          }|j        j        rJ ;t	          ||                                           d d d            d S # 1 swxY w Y   d S )Nr@  r  r  )r  r  r   r   r  r  r   r   s        rT   r  zODatasetIOBase.test_vectorized_indexing_negative_step.<locals>.multiple_indexing  s    	{CC :w $V,# : :C#[[--F'}}S11H%99999 6;;==999: : : : : : : : : : : : : : : : : :s   A0BBBr   r>  rt   r=  rI  r<  r   rW  r  rc   rs   r  )r+   rA   r   r  )r   r  r  r  r   s   `  @@rT   &test_vectorized_indexing_negative_stepz4DatasetIOBase.test_vectorized_indexing_negative_step  s     	#R.KKK$&&	
	: 
	: 
	: 
	: 
	: 
	: 
	: "Aq6Aq6Aq6":#sLLLb!R(( 
 	(###
 "Aq6Aq6Aq6":#sLLLb!R(( 
 	(#####rV   c                |   t          j        ddt          j        d          fi          }|                     |          5 }|                    dgd          j        d d d d dd d df         d d d d dd d f         }|j        |                                j        k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  )rj   prH  ri   )rs   rs      (   r   )rj   r  r^   rc   )	r  r   rk   onesr   r  r  sizesr!  )r   r   r  subsets       rT   test_outer_indexing_reversedz*DatasetIOBase.test_outer_indexing_reversed  s   Z')@)@AB
 
 ^^B 	77\\QC1\--/44R42>qqq$$B$zJF<6;;==#666666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s    A#B11B58B5c                   t                      }|                     |          5 }|                    |d         dk               }|                    |d         dk               }t          ||           d d d            d S # 1 swxY w Y   d S )Nr  rI  )r  )rA   r   r  r)   )r   r  r  r   r   s        rT   test_isel_dataarrayz!DatasetIOBase.test_isel_dataarray  s    $&&	^^I&& 	/' ~~9V+<q+@~AAH\\wv':\;;FXv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   ABB	Bc                p    fd|j                                         D ]\  }} |j                   d S )Nc                V   t          | d          rt          | j        t          j                  r | j                   d S t          | j        t
          j                  rt          | t          j                  sJ d S t          | j        t                    rt          | t          j	                  sJ d S t          | j        t          j                  rt          | t          j                  sJ d S t          t          | j                   dt          |                      d S )Nrl   z is wrapped by )hasattrr	  rl   r"   ExplicitlyIndexedrk   ndarrayNumpyIndexingAdapterdask_array_typeDaskIndexingAdapterrv  IndexPandasIndexingAdapter	TypeErrortype)objfind_and_validate_arrays    rT   r  zBDatasetIOBase.validate_array_type.<locals>.find_and_validate_array  s   sG$$ Xci)CDD 
X++CI66666!#)RZ88 X)#x/LMMMMMMM#CI?? X)#x/KLLLLLLL#CIrx88 X)#x/MNNNNNNN'4	??(V(V4PS99(V(VWWWX XrV   )r   r  rB  )r   r   r  r  r  s       @rT   validate_array_typez!DatasetIOBase.validate_array_type
  sd    	X 	X 	X 	X 	X L&&(( 	- 	-DAq##AG,,,,	- 	-rV   c                   t                      }|                     |          5 }|                     |           g dg dt          j        d          d}|                    |          } |j        di |}t          ||           |                     |            |j        di |}t          ||           |                     |           d d d            d S # 1 swxY w Y   d S )Nr  r  r<  r  r   )rA   r   r  rk   r  r  r)   r  s         rT   test_array_type_after_indexingz,DatasetIOBase.test_array_type_after_indexing  s=   $&&	^^I&& 	-'$$W--- )		<<<STVVH ~~h//H!W\--H--FXv...$$V,,, "W\--H--FXv...$$V,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   B+CC #C c           
     r   t           j                            dd          }t           j        |d<   t	          j        dd|fit          j        d          t          j        d          d          }t          |                    d          |	                    t          d d d	          
                     |                     |          5 }|                     |           |                    d          }|                    d          }t          ||           d d d            d S # 1 swxY w Y   d S )Nr  rI  )rs   rs   r   )rH  ri   r  ri   dimrt   ri   )rk   randomrandnNaNr  r   r  r)   dropnar  r  r   r  )r   r   r  r  r   r   s         rT   test_dropnazDatasetIOBase.test_dropna-  sd   IOOAq!!&$J:q/"1BIaLL+Q+Q
 
 
	 	%%y~~dD!8L8L~'M'M	
 	
 	
 ^^I&& 	/'$$W--- ''C'00H^^^,,FXv...		/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AD,,D03D0c                    t                      }|                     |          5 }t          |           |d         j        rJ 	 ddd           dS # 1 swxY w Y   dS )z.Make sure print does not load file into memoryr  N)rA   r   reprr  )r   r  r  s      rT   test_ondisk_after_printz%DatasetIOBase.test_ondisk_after_print?  s    $&&	^^I&& 	2'MMMv11111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   AAANNFr   )2r   r   r   r   r   r   r   r  r  r   r   r   r   r   r  r  r  r"  r'  r5  r   markr  r9  rE  rK  rg  ri  rn  r%   ry  r0   r  r  r  r  r  r  r  r  r  r  r-  r  r  r  r  r  r  r  r   rV   rT   r   r   $  s        $(F(((((,K,,,,$ $ $ NS
 
 
 
 NS   
 
 

   / / / /2 2 2 2  &/ / / /+ + + +B1 1 1 1&	9 	9 	9 	9 [ HII
9 
9 
9 JI
96 6 6 6 [ HII/ / / JI/
!3 !3 !3 !3F/ / / /

@ 
@ 
@ 
@ J J J YJ N N N _N</ / / // / / /
/ / / /3 3 3 3 1 1 1 1"3 3 3 3
4 
4 
4 
4/ / / />% >% >% >%@ [O   %$ %$ %$ %$N7 7 7 7/ / / /- - -(- - - -/ / / /$2 2 2 2 2 2rV   r   c                     e Zd Zd!dZd!dZd!dZej                            de	e
f ej        eeej                            d          	          eefeefg          d!d
            Zed             Zd!dZd!dZd!dZed!d            Zd!dZd!dZd!dZd!dZd!dZd!dZ d!dZ!d!dZ"d!dZ#d!dZ$d!dZ%d!dZ&d!dZ'd!dZ(d!dZ)d!dZ*d S )"CFEncodedBaserI   r   c                   t          j        ddt           j        gt                    }ddd}t	          dd|i |fi          }|                    d	
          }|                     |          5 }t          ||           d d d            n# 1 swxY w Y   t	          dd|i ddifi          }|                     |          5 }t          ||           d d d            d S # 1 swxY w Y   d S )NrQ  rR  ra      Xrk  )rf   rb   ri   rj   Tr`  rf   rV   )rk   rl   rm   rc  r   rd  r   r)   )r   r%  ro   rf  r   r   s         rT   $test_roundtrip_bytes_with_fill_valuez2CFEncodedBase.test_roundtrip_bytes_with_fill_valueH  ss   5'262&AAA"&66C#vr8!<=>>==d=++^^H%% 	/Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ C#vrL#3F!GHII^^H%% 	/Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s$   .BBBC  C$'C$c                   t          j        ddt           j        gt                    }t	          dd|fi          }ddd}t	          dd|i |fi          }t          j        t                    5  |                     |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	NrT  rU  ra   ri   rj   rk  r  )rb   rf   
rk   rl   rm   rc  r   r   r   r   r   r)   )r   r%  r   ro   rf  r   s         rT   +test_roundtrip_string_with_fill_value_ncharz9CFEncodedBase.test_roundtrip_string_with_fill_value_ncharT  sF   40???C#v/00!66C#vr8!<=>>].// 	3 	3)) 3V 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s6   /B:B"B:"B&	&B:)B&	*B::B>B>c                   t          t                    }t          dt          j        g |          i          }t          |d         j                  t          k    sJ |                     |          5 }t          ||           t          |d         j        k    sJ |d         j        |d         j        k    sJ |d         j        j
        %t          |d         j                  t          k    sJ d d d            d S # 1 swxY w Y   d S )Nr   ra   )r   r
  r   rk   rl   r   rb   r   r)   rc  metadata)r   rb   rf  r   s       rT   &test_roundtrip_empty_vlen_string_arrayz4CFEncodedBase.test_roundtrip_empty_vlen_string_array_  sO   !#&&C"E!:!:!:;<< 344;;;;^^H%% 	BXv...VC[.....#;$(;;;;; c{ )5's(9::cAAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   4A>C??DDzdecoded_fn, encoded_fnzBad _Unsigned attribute.r  )marksc                ,    |            } |            }|                      |          5 }|j        D ]*}|j        |         j        |j        |         j        k    sJ +t          ||d           d d d            n# 1 swxY w Y   |                      |t	          d                    5 }|j        D ]*}|j        |         j        |j        |         j        k    sJ +t          ||d           d d d            n# 1 swxY w Y   |                      |t	          d                    5 }|j        D ]*}|j        |         j        |j        |         j        k    sJ +t          ||d           d d d            n# 1 swxY w Y   t          | |            d           |                      |          5 }|j        D ]*}|j        |         j        |j        |         j        k    sJ +t          ||d           d d d            d S # 1 swxY w Y   d S )NFdecode_bytes)r  r@  )r   r   rb   r&   dict)r   
decoded_fn
encoded_fndecodedencodedr   r  s          rT   test_roundtrip_mask_and_scalez+CFEncodedBase.test_roundtrip_mask_and_scalem  s   ( *,,*,,^^G$$ 	A& O O(+1V5Ea5H5NNNNNNGV%@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A
 ^^G1F1F1F^GG 	A6 & O O(+1V5Ea5H5NNNNNNGV%@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A ^^G1F1F1F^GG 	A6& O O(+1V5Ea5H5NNNNNNGV%@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	EBBBB^^G$$ 	A& O O(+1V5Ea5H5NNNNNNGV%@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	AsK   AA;;A?A?+AC<<D D ,AE==FF7AH		HHc                    t          t          dt          j        dd                              ddd          ddifdt          j        dd	d                              ddd          d
difddd
dif          t          dddgddifdddgddifddddifdddgddggfdddgddggfdddgddggddifdddgd d!d"fdd#dd$if%                    } | d&         j                            d'd(d)           | j        d         j                            t          d(d*+                     | j        d         j                            t          d(d,+                     | j        d         j                            d-d.i           | S )/N)ln_platitude	longitude   f4ra   rt   ancillary_variableszstd_devs det_limrd   g?standard_namestandard_errorr   detection_minimum)rA  std_devsdet_limr  r   rs   r   degrees_northr  degrees_eastrc   grid_mapping_namelatitude_longitude)r  bnds2)r  r&  )r  r  zdegree^2r  rN  g      ?!atmosphere_ln_pressure_coordinateair_pressure)r  computed_standard_nameg     @hPa)r  r  latlonlatitude_bndslongitude_bndsareasr  P0rA  zarea: areasr+  )cell_measuresgrid_mappingr,  )r1  boundsr-  formula_termszp0: P0 lev : ln_p)r   r  rk   r  reshapero   updater  )rf  s    rT   _create_cf_datasetz CFEncodedBase._create_cf_dataset  s-   5Iat,,,44Q1==*,>? 6Ic3,,44Q1==$&67 $&9:  " $q!fw.HI&A.0IJB!46J KL41v1v6FG 6!Q!Q8HI-VaV$j) #J)L2@  '5!12'  %'
 '
P 	%,,+XFF	
 	
 	
 	
#,33h???	
 	
 	
 	$-44h/?@@@	
 	
 	
 	(//BU0VWWWrV   c                   |                                  }t                      5 }|                    |           t          |d          5 }|j        d         j        d         dk    sJ |j        d         j        d         dk    sJ d|d	         j        vsJ d|j        vsJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
NFr  r  r2  r,  r  r-  r  rA  )r6  r   r   r   r  r  )r   rf  tmp_filer   s       rT   8test_grid_mapping_and_bounds_are_not_coordinates_in_filezFCFEncodedBase.test_grid_mapping_and_bounds_are_not_coordinates_in_file  sh   **,, 	5(x(((he<<< 5y,28<OOOOy-3H=AQQQQQ$BzN,@@@@@$BH44444	5 5 5 5 5 5 5 5 5 5 5 5 5 5 5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s6   'C
AB0$C0B4	4C7B4	8CCCc                Z   |                                  }|                     |ddi          5 }t          ||           d d d            n# 1 swxY w Y   |                     |          5 }|                    g d          }t	          ||           d d d            d S # 1 swxY w Y   d S )Nr  r  r@  )r,  r-  r.  r/  r+  )r6  r   r)   reset_coordsr(   r  s       rT   1test_coordinate_variables_after_dataset_roundtripz?CFEncodedBase.test_coordinate_variables_after_dataset_roundtrip  s5   **,,^^H?E2J^KK 	/vVX...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ ^^H%% 	+,,LLL H ***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s#   AAA+(B  B$'B$c                x   |                                  }t          j        t          d          5  |                     |d                                         ddi          5 }t          ||d                                                    d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NzNVariable\(s\) referenced in bounds not in variables: \['l(at|ong)itude_bnds'\]r   rA  r  r  r@  )r6  r   r  UserWarningr   
to_datasetr)   )r   rf  r   s      rT   Ftest_grid_mapping_and_bounds_are_coordinates_after_dataarray_roundtripzTCFEncodedBase.test_grid_mapping_and_bounds_are_coordinates_after_dataarray_roundtrip  si    **,, \-
 
 
 
	L 
	L $//11QV?W     L *)=)H)H)J)JKKKL L L L L L L L L L L L L L L
	L 
	L 
	L 
	L 
	L 
	L 
	L 
	L 
	L 
	L 
	L 
	L 
	L 
	L 
	L 
	L 
	L 
	Ls5   2B/")BB/B	B/B	B//B36B3c                    |                                  }|d                                         }t          j        |          }|j        d= |j        d= t          ||d                    d S )NrA  r,  r-  )r6  to_irisr   	from_irisr  r)   )r   rf  	iris_cuber   s       rT   .test_coordinate_variables_after_iris_roundtripz<CFEncodedBase.test_coordinate_variables_after_iris_roundtrip  sj    **,,Z(0022	$Y//OO,ho>N.O 	*!566666rV   c                z   d }t          dddgfdddgfddddgfdd	d
gfd          }|                     |          5 }t          ||           d d d            n# 1 swxY w Y   t                      5 }|                    |           t          |d          5 } ||d         j        d                   sJ  ||d         j        d                   sJ d|j        vsJ d|d         j        vsJ d|d         j        vsJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    ddg          }|                     |          5 }t          ||           d d d            n# 1 swxY w Y   t                      5 }|                    |           t          |d          5 } ||j        d                   sJ d|d         j        vsJ d|d         j        vsJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d|d         j        d<   |                     |          5 }t          ||           d d d            n# 1 swxY w Y   d|d         j        d<   t                      5 }|                    |           t          |d          5 }d|d         j        d         vsJ d|d         j        d         vsJ d|d         j        vsJ d|d         j        vsJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                    | dk    p| dk    S )Nzlat lonzlon latr   r  s    rT   equals_latlonz>CFEncodedBase.test_coordinates_encoding.<locals>.equals_latlon  s    )#7si'77rV   ri   r   rs   rc   )temppreciprt   rI  r  r<  latlonFr8  rK  r  rL  rN  rO  T)	r   r   r)   r   r   r   r  	drop_varsro   )r   rJ  rf  r   r9  r   modifieds          rT   test_coordinates_encodingz'CFEncodedBase.test_coordinates_encoding  s   	8 	8 	8 Aq6]sQGn==1a&M3A-88
 
 ^^H%% 	/VX...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	<(x(((he<<< <$}RZ%5m%DEEEEE$}R\%7%FGGGGG$BH4444$BuIO;;;;$BuIO;;;;;< < < < < < < < < < < < < < <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< %%vx&899^^H%% 	/VX...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	<(x(((he<<< <$}RXm%<=====$BuIO;;;;$BuIO;;;;;< < < < < < < < < < < < < < <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 49!-0^^H%% 	/VX...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/5:#M2 	?(x(((hd;;; ?rBvJ$7$FFFFFBxL$9-$HHHHH$BuI,>>>>>$BuI,>>>>>>	? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   AA #A 5'D*A*DD*D	D*D	D**D.1D.!E>>FF'H>;H:HH
	
HH
	HH!$H!I**I.1I.'L0:ALL0L	L0L	 L00L47L4c                X   t          t          j        ddd          t          j        ddd          t          j        ddd          d	t          j        ddt                    fd
          }|                     |          5 }t          ||           d d d            n# 1 swxY w Y   | j        dk    rrd|d         j        d<   t          j	        t                    5  |                     |          5 }	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S d S )NrI  r^   z>i2ra      z<i4   z=i8ri   )ri   rH  r  r   netcdf4bigr  endian)r   rk   r  floatr   r)   r   ro   r   r   r   r   r   r   s      rT   test_roundtrip_endianz#CFEncodedBase.test_roundtrip_endian9  s   Yq"E222Yq"E222Yq"E22229Q%8889	 
 
 ^^B 	)6
 R(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) ;)##).BsGX&233  ^^B'' 6                                $#sH   B""B&)B&!D7D9DD			DD		DD!$D!c                   t           df}t          df}t          j                            d          }t	          j        |          }t          g d||||g          D ]\  }\  }}t          ||i          }t          j	        |          5 }	| 
                    |          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |	                    |           |	                    t          |                     d S )Nzstring or Nonezstring must be length 1 or)rt   rt   )r   )r  r<  Trb  )r  r   rk   r  r  r   zipr   r   r   r   r   r  )
r   teverK   darQ   errormsgr   excinfos
             rT   "test_invalid_dataarray_names_raisez0CFEncodedBase.test_invalid_dataarray_names_raiseP  s   )*67y''\$"%&;&;&;b"b"=M"N"N 	& 	&D,5#$$$Bu%% ^^B''                               MM#MM$t**%%%%	& 	&s6   	CB-!C-B11C4B15CC	C	c                   t          ddt          j        d          fi          }t          dddii          }|                     ||          5 }|j        j        d         }|j        dk    r|j        d	k    sJ 	 d d d            n# 1 swxY w Y   |j        j        i k    sJ t          dd
dii          }t          j
        t          d          5  |                     ||          5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          dd
i          }t          j
        t          d          5  |                     ||          5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          di i          }t          j
        t                    5  |                     ||          5 }	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nri   rH  r   rb   r  ro   ru  fr  r*  barunexpected encodingr   zmust be castableinvalid)r   rk   r  r  r   ri   ro   r  itemsizer   r   r   KeyErrorr   r   rS   r   encoded_dtypes        rT   test_encoding_kwargz!CFEncodedBase.test_encoding_kwarg]  s   cC41233!%gt_/E!F!F!F^^BF^33 	Mv"H-g6M %,,1G11L1L1L1L1L	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M t}""""eU^4555]:-CDDD 	 	77 6              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 U|,,,]:-@AAA 	 	77 6              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	2///]8$$ 	 	77 6              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   +B		BBD-C;/D;C?	?DC?	DDD
F"E0$F0E4	4F7E4	8FFF=G;G#G;#G'	'G;*G'	+G;;G?G?c                ,   t          dt          j        dd          i          }d}t          dd|ii          }|                     ||          5 }|j        j        d         |k    sJ t          ||           d d d            d S # 1 swxY w Y   d S )	Nrj   rq  rI  periodszdays since 1900-01-01r   rf  ru  )r   rv  
date_ranger  r   rj   ro   r)   )r   r   r   rS   r   s        rT   test_encoding_kwarg_datesz'CFEncodedBase.test_encoding_kwarg_datesv  s    c2=qAAABCC'gu%56777^^BF^33 	)v8$W-6666VR(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   )B		BBc                   g dg dfD ]}t          d|i          }t          dddii          }|                     ||          5 }|d         j        d         dk    sJ t	          ||           d d d            n# 1 swxY w Y   d S )Ns   foo   bars   bazr*  rh  bazri   rb   rk  rf  ru  )r   r  r   ro   r)   )r   r]  r   rS   r   s        rT   &test_encoding_kwarg_fixed_width_stringz4CFEncodedBase.test_encoding_kwarg_fixed_width_string~  s    0002G2G2GH 	- 	-G#w((BC'4#9:::F77 -6c{+G4<<<< ,,,- - - - - - - - - - - - - - -	- 	-s   *A==B	B	c                   t          ddt          j        d          fi          }t          dddii          }|                     ||          5 }t          j        |j        j        d                   sJ 	 d d d            n# 1 swxY w Y   |j        j        i k    sJ t          ddt          j        d          fi          }t          ddd	ii          }t          j
                    5  t          j        d
d           |                     ||          5 }d|j        j        vsJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j        j        i k    sJ t          ddt          j        dd	          fi          }|                     |          5 }d|j        j        vsJ 	 d d d            n# 1 swxY w Y   |j        j        i k    sJ d S )Nri   rH  r   rb   r  rf  ru  rf   ru   r  z#.*floating point data as an integerr^   ra   )r   rk   r  r  r   mathisnanri   ro   r  r  r  r   r   rS   r   s       rT   test_default_fill_valuez%CFEncodedBase.test_default_fill_value  s   cC41233gt_5666^^BF^33 	?v:fh/=>>>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?t}"""" cC41233gw%78999$&& 	= 	=#H.STTT77 =6#68+<<<<<<= = = = = = = = = = = = = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= t}"""" cC2W!=!=!=>?@@^^B 	96vx'888888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9t}""""""sZ   'BB	B	.-ED9-E9D=	=E D=	EEE)GGGc                    t          ddt          j        t          j         gfi          }d |j        j        d<   |                     |          5 }d|j        j        vsJ 	 d d d            d S # 1 swxY w Y   d S )Nri   rH  rf   )r   rk   r  ri   ro   r   rZ  s      rT   test_explicitly_omit_fill_valuez-CFEncodedBase.test_explicitly_omit_fill_value  s    cC"%"%1233&*l#^^B 	96vx'888888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   A..A25A2c                &   t          ddt          j        t          j         gfi          }t          ddd ii          }|                     ||          5 }d|j        j        vsJ 	 d d d            n# 1 swxY w Y   |j        j        i k    sJ d S )Nri   rH  rf   rf  ru  )r   rk   r  r  r   ri   ro   rH  r~  s       rT   2test_explicitly_omit_fill_value_via_encoding_kwargz@CFEncodedBase.test_explicitly_omit_fill_value_via_encoding_kwarg  s    cC"%"%1233lD%9:;;;^^BF^33 	9vvx'888888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9t}""""""   A44A8;A8c                   t          ddt          j        t          j         gfidddgi          }d |j        j        d<   |                     |          5 }d|j        j        vsJ 	 d d d            d S # 1 swxY w Y   d S )Nri   rH  rM  rN  r  rf   )r   rk   r  rH  ro   r   rZ  s      rT   (test_explicitly_omit_fill_value_in_coordz6CFEncodedBase.test_explicitly_omit_fill_value_in_coord  s    cC"%"%12C#s;LMMM&*l#^^B 	96vx'888888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   A44A8;A8c                2   t          ddt          j        t          j         gfidddgi          }t          ddd ii          }|                     ||          5 }d|j        j        vsJ 	 d d d            n# 1 swxY w Y   |j        j        i k    sJ d S )	Nri   rH  rM  rN  r  rf   rf  ru  )r   rk   r  r  r   rH  ro   r~  s       rT   ;test_explicitly_omit_fill_value_in_coord_via_encoding_kwargzICFEncodedBase.test_explicitly_omit_fill_value_in_coord_via_encoding_kwarg  s    cC"%"%12C#s;LMMMlD%9:;;;^^BF^33 	9vvx'888888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9t}""""""s   A::A>A>c                T   t          ddt          j        dd          fi          }t          dddii          }|                     ||          5 }|j        j        d         }|j        d	k    r|j        d
k    sJ 	 d d d            n# 1 swxY w Y   |j        j        i k    sJ d S )Nri   rH  r   r  ra   rb   rf  ru  rg  r  )	r   rk   r  r  r   ri   ro   r  rk  rm  s        rT   test_encoding_same_dtypez&CFEncodedBase.test_encoding_same_dtype  s	   cC4t!<!<!<=>??gt_5666^^BF^33 	Mv"H-g6M %,,1G11L1L1L1L1L	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M t}""""""s   +BBBc                    t                      }|                     |          5 }t          ||           d d d            d S # 1 swxY w Y   d S r   )rA   r   r)   r   rK   r   s      rT   test_append_writezCFEncodedBase.test_append_write  s    !!""4(( 	+FT6***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   AA	Ac                   t                      }t          d          5 }|                     ||d           d|d         d d <   |d         dz  |d<   |                     |ddg         |d	           |                     |          5 }t	          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
NFr   r   r   ivar2rI  var9r   rA   r   r   r   r)   r   rK   r9  r   s       rT   test_append_overwrite_valuesz*CFEncodedBase.test_append_overwrite_values  sP   !!5999 	/XIIdH3I///"DLO<!+DLIIdFF+,hSIAAA8$$ / v.../ / / / / / / / / / / / / / /	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s6   A)B=B%B=%B)	)B=,B)	-B==CCc                   t                      }t          d          5 }|                     ||d           |d         dz  |d<   |                    t	          dd	          
          }t          j        t          d          5  |                     ||d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NFr   r   r  r  rI  r  rt   r=  r  z,Unable to update size for existing dimensionr   r   )rA   r   r   r  r  r   r   r   )r   rK   r9  s      rT   #test_append_with_invalid_dim_raisesz1CFEncodedBase.test_append_with_invalid_dim_raises  sP   !!5999 	4XIIdH3I///<!+DL99%1++9..D"Q   4 4 		$s	3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4		4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s6   A&CB*C*B.	.C1B.	2CC	Cc                ,   t          dddgfdddgfd                              dd	g
          }t          j        t          d          5  |                     |          5  	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nri   rs   rt   r   rW  )rH  r  r  rH  r  r  
MultiIndexr   )r   	set_indexr   r   r   r   r   r   s     rT   test_multiindex_not_implementedz-CFEncodedBase.test_multiindex_not_implemented  s.   3A-sS#J6GHHIIISSCj T 
 
 ].mDDD 	 	##                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   B	#A1%B	1A5	5B	8A5	9B		BBNr   )+r   r   r   r  r  r  r   r   parametrizer   r   paramr   r   r-  r   r   rp   rx   r  staticmethodr6  r:  r=  rA  r4   rF  rR  r[  rd  ro  rt  rz  r  r  r  r  r  r  r  r  r  r  r   rV   rT   r  r  G  s       
/ 
/ 
/ 
/	3 	3 	3 	3B B B B [  3: FL6>k''/I'JJ   18 +,QR	
 &A A A' &A< 3 3 \3j5 5 5 5+ + + +L L L L0 7 7 7 ]7'? '? '? '?R   .& & & &   2) ) ) )- - - -# # # #.9 9 9 9# # # #9 9 9 9# # # ## # # #+ + + +	/ 	/ 	/ 	/	4 	4 	4 	4     rV   r  c                  ^    e Zd ZdZej                            ed          dd            ZdS )	
NetCDFBasez+Tests for all netCDF3 and netCDF4 backends.z+Windows does not allow modifying open filesr  rI   r   c                B   t                      5 }t                      5 }t          d          5 }|                     ||           |j        xj        dz  c_        |                     ||           d d d            n# 1 swxY w Y   t          || j                                                  }t          j	        ||           t          || j                                                  }	 t          j        |j        j        |j        j                  rJ 	 |                                 |                                 n-# |                                 |                                 w xY w	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  d   r   )r   rU   r   rhr%  r   r   r!  shutilrd  rk   array_equalclose)r   example_1_pathexample_1_modified_path	example_1r   rW  s         rT   test_refresh_from_diskz!NetCDFBase.test_refresh_from_disk  s@     	. "" &=).99 BYIIi888L''3.''IIi)@AAA	B B B B B B B B B B B B B B B !DDDIIKK 3^DDD !DDDIIKK!~adk14;GGGGGGGGIIIGGIIII GGIIIGGIIIII'              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sq   FE<AA<0E<<B  E<B A(E<-+E)E<*E,,E<0F<F 	 FF 	FFFNr   )	r   r   r   __doc__r   r   skipifr.  r  r   rV   rT   r  r    sX        55[H        rV   r  .ncsuffixr
  r   r   Iterator[str]c              #  T  K   t          j                    }t          j                            |dt          t                     |            }	 |V  	 t          j        |           d S # t          $ r |s Y d S w xY w# 	 t          j        |           w # t          $ r |s Y w w xY wxY w)Nztemp-)
tempfilemkdtemprL   rM   rN   next_counterr  rmtreeOSError)r  r   temp_dirrM   s       rT   r   r   	  s       !!H7<<"B$x.."B&"B"BCCD


	M(##### 	 	 	(   		M(#### 	 	 	(  	sB   A= A) )A:9A:=B'?BB'B$!B'#B$$B'nfilesintIterator[list[str]]c              #     K   t                      5 fdt          |           D             }|V  d d d            d S # 1 swxY w Y   d S )Nc                V    g | ]%}                     t                              &S r   )enter_contextr   )rY   r  r   stackr  s     rT   rZ   z$create_tmp_files.<locals>.<listcomp>  sB     
 
 
 8M N NOO
 
 
rV   )r   range)r  r  r   filesr  s    `` @rT   create_tmp_filesr    s       
 
 
 
 
 
 
6]]
 
 
                  s   "AA
Ac                      e Zd ZU dZdZded<   ddZddZdd	Zdd
Z	ddZ
ddZddZddZddZddZddZddZddZddZddZddZddZddZdS )NetCDF4Basez+Tests for both netCDF4-python and h5netcdf.rV  rG   r   rI   r   c                p   t                      5 }t          j        |d          5 }|                    d          }|}|                    dd           t          j        d          }|                    dt
          j        d           ||j	        d         d d <   d d d            n# 1 swxY w Y   t                      }d|f|d<   d	D ]M}| 
                    ||
          5 }t          |d         |d                    d d d            n# 1 swxY w Y   Nt          j        t                    5  t          |d
           d d d            n# 1 swxY w Y   t          j        t           d          5  t          |d
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r*  timer^   sizeri   r  
dimensions)r*  z/foozfoo/z/foo/grouprh  zmust be a stringr   rs   rt   rI  )r   nc4r   createGroupcreateDimensionrk   r  createVariableint32r   r   r(   r   r   r  r   r   )	r   r9  rootgrpfoogrpr   ri   r   r  r   s	            rT   test_open_groupzNetCDF4Base.test_open_group*  s    	8(Xs++ )w ,,U33""6"333IbMM!!#rxI!FFF'(S!!!!$) ) ) ) ) ) ) ) ) ) ) ) ) ) ) yyH#QKHSM 8 = =YYxuY55 = hsm<<<= = = = = = = = = = = = = = = w'' 4 4XU33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4z1DEEE 8 8XY77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8)	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   F+A7B(F+(B,	,F+/B,	03F+#D F+DF+DF+1EF+E	F+E	F+5FF+F	F+F	F++F/2F/c                   t                      5 }t          j        |d          }|                    d          }|                    d          }|}|                    dd           t          j        d          }|                    dt
          j        d	           ||j	        d         d d <   |
                                 t                      }d|f|d<   d
D ]M}|                     ||          5 }	t          |	d         |d                    d d d            n# 1 swxY w Y   N	 d d d            d S # 1 swxY w Y   d S )Nr   r*  rh  r  r^   r  ri   r  r  )zfoo/barz/foo/barzfoo/bar/z	/foo/bar/r  )r   r  r   r  r  rk   r  r  r  r   r  r   r(   )
r   r9  r  r  bargrpr   ri   r   r  r   s
             rT   test_open_subgroupzNetCDF4Base.test_open_subgroupC  s     	=(k(C00G((//F''..FBvB///	"Ac28	BBB#$BLaaa MMOOOyyH#QKHSM H = =YYxuY55 = hsm<<<= = = = = = = = = = = = = = ==	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s6   C%D74DD7D!!D7$D!%D77D;>D;c                   t                      }|dz  }t                      5 }|                     ||d           |                     ||dd           |                     |d          5 }t	          ||           d d d            n# 1 swxY w Y   |                     |d          5 }t	          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrt   zdata/1r  zdata/2r   )r  r   r  )r   data1data2r9  actual1r  s         rT   test_write_groupszNetCDF4Base.test_write_groupsY  s    ""	 	1(IIeXXI666IIeXXCI@@@8844 1 0001 1 1 1 1 1 1 1 1 1 1 1 1 1 18844 1 0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1sZ   A	C+B<CB	CB	C*C;CC	CC	CC#&C#c                L   g dg dfD ]}t          d|i          }t          dg di          }t          ddt          ii          }|                     ||          5 }|d         j        d         t          u sJ t          ||           d d d            n# 1 swxY w Y   d S )Nrv  rx  ri   rb   rf  ru  )r   r  r
  r   ro   r)   )r   input_stringsrf  r   rS   r   s         rT   test_encoding_kwarg_vlen_stringz+NetCDF4Base.test_encoding_kwarg_vlen_stringd  s   6668M8M8MN 	3 	3M]344H%:%:%:;<<HC'3#8999Ff== 3c{+G4;;;; 2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3		3 	3s   -BB	B	c                   t          j        ddt           j        gt                    }t	          dd|fi          }t	          dd|i ddifi          }t          j        t                    5  |                     |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t	          dd|i ddifi          }t          j        t                    5  |                     |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	NrT  rU  ra   ri   rj   rf   XXXrb  r  )r   r%  r   rf  r   s        rT   *test_roundtrip_string_with_fill_value_vlenz6NetCDF4Base.test_roundtrip_string_with_fill_value_vlenm  s<   40???C#v/00 C#vrL%3H!IJKK].// 	3 	3)) 3V 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 C#vrL"3E!FGHH].// 	3 	3)) 3V 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sl   ,B6BB6B#	#B6&B#	'B66B:=B:1D<D$D<$D(	(D<+D(	,D<<E E c                   t                      5 }t          j        g dg dgd          }t          j        |d          5 }|                    dd           |                    d	d
           |                    dt          j        d          d          }||d d <   d d d            n# 1 swxY w Y   t          j        ddgd          }t	          dd|fi          }t          |          5 }t          ||           | 
                    |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N)r   rW  rX  )derg  r  ra   r   r  ri   rt   string3rI  rk  )ri   r  abcdef)r   rk   rl   r  r   r  r  rb   r   r)   r   )r   r9  r%  ncr  r   r   r2  s           rT   test_roundtrip_character_arrayz*NetCDF4Base.test_roundtrip_character_array  sd    	=(X@LLLFXC000 B""3***""9a000%%c28D>>;KLL!!!	               XuenC888Fc6]344Hh'' =6 6222^^F++ =|$X|<<<= = = = = = = = = = = = = = == = = = = = = = = = = = = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s~   3E"AB+E"+B/	/E"2B/	3=E"0&E
D3'E
3D77E
:D7;E
>E"
E	E"E	E""E&)E&c                   t          dt          j        ddgd          i          }|                     |          5 }t	          ||           |d         j        t          j        d          k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nri   r*  zzzzr  ra   S4)r   rk   rl   r   r)   rb   r  s      rT   test_default_to_char_arraysz'NetCDF4Base.test_default_to_char_arrays  s    RXufoSAAABCC^^D!! 	7VT6***#;$66666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   6BBBc                B   t                      5 }t          j        |d          5 }|                    dd           |                    dt
          j        d           d}|j        d                             d|           t          j	        d          d	z   |j        d         d d <   d d d            n# 1 swxY w Y   t                      t          j        d
d          }|t          j        d          d}d|i |fd<   t          |          5 }t          |d         d                    fd|d         j                                        D             }|d         j        k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r  r^   r  r  r  days since 1999-01-01r   r  z
1999-01-05rq  r  )r   rb   c                :    i | ]\  }}|d          j         v ||S r  rf  )rY   r  r  r   s      rT   
<dictcomp>z3NetCDF4Base.test_open_encodings.<locals>.<dictcomp>  s<     # # #1HV,555 q555rV   )r   r  r   r  r  rk   r  r   	setncattrr  rv  rs  rb   r   r(   ro   r  )	r   r9  r   r   r  ro   r   actual_encodingr   s	           @rT   test_open_encodingszNetCDF4Base.test_open_encodings  s     	D(Xs++ <r""6"333!!&"(y!III/V$..w>>>*,)B--!*;V$QQQ'< < < < < < < < < < < < < < < yyH=r:::D!&'1B1BCCH &b(;HVh'' D6VF^Xf-=>>># # # # &v 7 = = ? ?# # #
 '(6*:*CCCCCCD D D D D D D D D D D D D D D	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds[   FBB6*F6B:	:F=B:	>AFAE<0F<F 	 FF 	FFFc                   t          ddt          j        d          fi          }t          dddii          }|                     ||          5 }|j        j        d         sJ 	 d d d            d S # 1 swxY w Y   d S )Nri   rH  r   zlibTrf  ru  )r   rk   r  r  r   ri   ro   r~  s       rT   test_dump_encodingszNetCDF4Base.test_dump_encodings  s    cC41233fd^4555^^BF^33 	-v8$V,,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   A44A8;A8c           
     ~   t                      5 }t          j        |d          5 }|                    dd           |                    dt
          j        d           d}|j        d                             d|           t          j	        d          d	z   |j        d         d d <   d d d            n# 1 swxY w Y   t          |          5 }t                      5 }|                    |           t          j        |d
          5 }|j        d                             d          |k    sJ t          |j        d         t          j	        d          d	z              d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r  r^   r  r  r  r  r   r  r)r   r  r   r  r  rk   r  r   r  r  r   r   	getncattrr'   )r   r9  r   r   xarray_dataset	tmp_file2s         rT   test_dump_and_open_encodingsz(NetCDF4Base.test_dump_and_open_encodings  s     	T(Xs++ <r""6"333!!&"(y!III/V$..w>>>*,)B--!*;V$QQQ'< < < < < < < < < < < < < < < h'' T>$&& T)",,Y777Y44 T!|F3==gFF%OOOO*2<+?2QRARSSST T T T T T T T T T T T T T TT T T T T T T T T T T T T T TT T T T T T T T T T T T T T T	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	Ts   F2BB5)F25B9	9F2<B9	=F2F+F	AE,	 F,E00F3E04F7FFF
FFF2F	F2!F	"F22F69F6c                   t                      }|d         j                            dddd|j        j        d           |                     |          5 }|d         j                                        D ]\  }}||d         j        |         k    sJ 	 d d d            n# 1 swxY w Y   |                    d          }|                     |          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nr  Tr<  r<  )r  
chunksizes
fletcher32shuffleoriginal_shaper   r  )	rA   ro   r5  r  shaper   r  r  r(   )r   rK   r   r  r  r   s         rT   test_compression_encodingz%NetCDF4Base.test_compression_encoding  s   !!V$$$""&)/ 	
 	
 	
 ^^D!! 	7VV-3355 7 71F6N3A6666667	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
 99!9$$^^H%% 	+6***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s$   ?B  B$'B$C44C8;C8c                ^   t          dt          j        d          i          }t          dddddd          }t          t          |          	          }|                     ||
          5 }t          ||           |j        j        d         dk    sJ |j        j        d         sJ |j        j        d         dk    sJ |j        j        d         sJ |j        j        d         dk    sJ |j        j        d         sJ 	 d d d            n# 1 swxY w Y   |j        j        i k    sJ d S )Nri   r   r  T	   r<  )rb   r  	complevelr  r  r  r  rf  ru  rb   r  r  r  r  r  )r   rk   r  r  r   r(   ri   ro   )r   r   ro   rS   r   s        rT   test_encoding_kwarg_compressionz+NetCDF4Base.test_encoding_kwarg_compression  s   c29T??+,,
 
 
 th///000^^BF^33 	0v$$$8$W-55558$V,,,,8$[1Q66668$\22228$\2d::::8$Y/////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 t}""""""s   .BDDDc                8   t          dg di          }d}d|i|j        d         _        |                     |          5 }t	          ||           t          |d         j        d         |d         j        d                    d d d            d S # 1 swxY w Y   d S )Nri   r  rt   r  )r   r   ro   r   r)   r'   )r   r   r  r   s       rT   )test_keep_chunksizes_if_no_original_shapez5NetCDF4Base.test_keep_chunksizes_if_no_original_shape  s    c999%&&
&2J%?S"^^B 	6R(((3 .s0D\0R  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ABBBc                    t          g ddg dfd          }dddddddd	|j        d         _        |                     |          5 }t	          ||           d d d            d S # 1 swxY w Y   d S )
Nr  ri   )rt   rI  r  rG  Fr   )i   rI  )r  r  r  r  
contiguousr  r  )r   r   ro   r   r(   rZ  s      rT   "test_encoding_chunksizes_unlimitedz.NetCDF4Base.test_encoding_chunksizes_unlimited  s    999C+;<<==""&
 &
S" ^^B 	%6V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   A&&A*-A*c                   t                      5 }t          j        |d          5 }|                    dd           |                    dddd	           |j        d         }|                    d
           d|_        d|_        t          j
        g d          |d d <   d d d            n# 1 swxY w Y   t          j        |d          5 }t          j        
                    g dg d          }|j        d         d d          }t          ||           d d d            n# 1 swxY w Y   t          |          5 }t                      }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r  rj   r<  ri   ru   rj   rc   )
fill_valueFr^   rd   rr   r  )rc   rc   r^   r_   r`   )TTFFF)mask)r   r  r   r  r  r   set_auto_maskandscalerg   rh   rk   rl   mar'   r   rp   r)   )r   r9  r  r  r   r   r   s          rT   test_mask_and_scalezNetCDF4Base.test_mask_and_scale  s    	/(XC000 3B""3***!!#w2!FFFL%''...!!$x 1 1 122!!!3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 XC000 5B5;;,,,3T3T3T '   c*111-"8V4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 h'' /28:: 2.../ / / / / / / / / / / / / / /)	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s~   FA;B-!F-B1	1F4B1	5FAD%F%D)	)F,D)	-F?E*F*E.	.F1E.	2FF	Fc                v   t                      5 }t          j        |d          5 }|                    dd          }d|d<   d d d            n# 1 swxY w Y   t	          |          5 }t          ddi          }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r  ri   ru   {   .)r   r  )r   r  r   r  r   r)   )r   r9  r  r  r   r   s         rT   test_0dimensional_variablez&NetCDF4Base.test_0dimensional_variable*  sz     	/(XC000 B%%c733#               h'' /2"C#344 2.../ / / / / / / / / / / / / / /	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sX   B.AB.A	B.A	B.("B
B.B	B.B	B..B25B2c           
     &   t                      5 }t          j        g dt                    }t	          j        |d          5 }|                    dd           |                    dt          d          }||d d <   d d d            n# 1 swxY w Y   t          dd|fi          }i dd	ifD ]J}t          |fi t          t          |          5 }t          ||           d d d            n# 1 swxY w Y   K	 d d d            d S # 1 swxY w Y   d S )
Nrx  ra   r   r  ri   rI  r  r  T)r   rk   rl   rc  r  r   r  r  r
  r   r   r  r)   )r   r9  r%  r  r  r   rS   r   s           rT   test_read_variable_len_stringsz*NetCDF4Base.test_read_variable_len_strings6  s    	7(X3336BBBFXC000 B""3***%%c377!!!              
 c6]344HT23 7 7!(AAd4.@.@AA 7V$Xv6667 7 7 7 7 7 7 7 7 7 7 7 7 7 77	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7sY   4D:B	=D	B	DB	>DC, D,C00D3C04DD
D
c                   t          ddt          j        d          fi          }|                     |t	          dg                    5 }|j        d         t          d          k    sJ t          ||           d d d            n# 1 swxY w Y   ddgi|_        |                     |          5 }|j        d         t          d          k    sJ t          ||           d d d            d S # 1 swxY w Y   d S Nri   rH  r   unlimited_dimsru  r%  r   rk   r  r   r  ro   setr(   rZ  s      rT   test_encoding_unlimited_dimsz(NetCDF4Base.test_encoding_unlimited_dimsD  w   cC41233^^BD,F,F,F^GG 	%6?#34C@@@@V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% (#/^^B 	%6?#34C@@@@V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%$   1B		BB31C11C58C5Nr   )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   rV   rT   r  r  %  s        55&F&&&&8 8 8 82= = = =,	1 	1 	1 	13 3 3 33 3 3 3$= = = =$7 7 7 7D D D D6- - - -T T T T&+ + + +(# # # #.	 	 	 	% % % %/ / / /2
/ 
/ 
/ 
/7 7 7 7% % % % % %rV   r  c                       e Zd Zej        d             Zd
dZd
dZd
dZe	j
                            d          d
 fd	            Z xZS )TestNetCDF4Datac              #     K   t                      5 }t          j                            |d          5 }|V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S Nr   r  r   r   NetCDF4DataStorer   r   r9  r  s      rT   r   zTestNetCDF4Data.create_storeQ  s       	(*//s/CC u              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s3   "AAAA	AA	AA #A rI   r   c                
   t                      }d|d<   d|d<   d|d<   d|j        d<   |                     |          5 }t          |j                  t          |j                  k    sJ 	 d d d            d S # 1 swxY w Y   d S )	Nrs   r   rt   r  rI  rW  r  rX  )r   r  r   listr   rZ  s      rT   test_variable_orderz#TestNetCDF4Data.test_variable_orderW  s    YY333	#^^B 	@6%%f.>)?)??????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   -A88A<?A<c                   t           j                            d          }g d}g d}t          j        |d||dd          } |j                    }|                     |          5 }t          j        |          }|                    |          }	 |j        j	         n*# t          $ r}	d	t          |	          v sJ Y d }	~	nd }	~	ww xY wd d d            d S # 1 swxY w Y   d S )
N)r  r=  r  )r   rs   rt   rI  )r   rt   rs   rI  r<  r  )dim0r  randovar)rK   r  r  rQ   r  zfirst by calling .load)rk   r  r  r   r@  r   argsortr  r7  r%  
IndexErrorr
  )
r   random_datar6  r  r`  r   ondiskindsds2errs
             rT   test_unsorted_index_raisesz*TestNetCDF4Data.test_unsorted_index_raisesb  sT   i&&F&33||!!!\! $//	
 
 
 R]__^^B 	<6:d##D++4+((C<### < < </3s88;;;;;;;;;<	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s<   (+CB! C!
C+C>CCCCCc                ^   g d}dg}d}|||d}t          ddg d|fi|          }|                     |          5 }||d         fD ]K}t          ||j        d	                    t          ||j        d
                    ||j        d         k    sJ L	 d d d            d S # 1 swxY w Y   d S )N)r3  ofr]  zone elementz
one stringrx  ri   rH  r  r  r*  rh  ry  )r   r   r'   r  )r   list_of_stringsone_element_list_of_strings
one_stringr  r   r   totests           rT   test_setncattr_stringz%TestNetCDF4Data.test_setncattr_stringy  s-   333'4o#!
".
 

 cCE235AAA^^B 	96!6#;/ 9 9"?FL4GHHH"#>U@STTT!V\%%8888889	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   AB""B&)B&z5https://github.com/Unidata/netcdf4-python/issues/1195r  c                H    t                                                       d S r   )superr  r   	__class__s    rT   r  z&TestNetCDF4Data.test_refresh_from_disk  s    &&(((((rV   r   )r   r   r   r  r  r   r4  r?  rG  r   r   skipr  __classcell__rK  s   @rT   r,  r,  O  s          
	@ 	@ 	@ 	@< < < <.9 9 9 9" [TUU) ) ) ) ) VU) ) ) ) )rV   r,  c                  &    e Zd ZddZddZddZdS )TestNetCDF4AlreadyOpenrI   r   c                   t                      5 }t          j        |d          5 }|                    dd          }d|d<   d d d            n# 1 swxY w Y   t          j        |d          }t	          j        |          }t          |          5 }t          ddi          }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr   r  ri   r  r+  .r  r   r+  )r   r  r   r  r   r0  r   r)   )r   r9  r  r  r  r   r   s          rT   test_base_casez%TestNetCDF4AlreadyOpen.test_base_case  s    		/(XC000 B%%c511#               XC000B-b11Ee$$ /"C?33 2.../ / / / / / / / / / / / / / /		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/sX   CACA	CA	<C"C 4C C	CC	CCCc                   t                      5 }t          j        |d          5 }|                    d          }|                    dd          }d|d<   d d d            n# 1 swxY w Y   t          j        |d          }t          j        |j        d                   }t          |          5 }t          dd	i          }t          ||           d d d            n# 1 swxY w Y   t          j        |d          }t          j        |d
          }t          |          5 }t          dd	i          }t          ||           d d d            n# 1 swxY w Y   t          j        |d          5 }t          j        t          d          5  t          j        |j        d         d
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r  rV  ri   r  r+  .r  rR  r  zmust supply a rootr   )r   r  r   r  r  r   r0  groupsr   r)   r   r   r   )r   r9  r  r  r  r  r   r   s           rT   
test_groupz!TestNetCDF4AlreadyOpen.test_group  s    	I(XC000 Bs++((e44#              
 XC000B-bin==Ee$$ /"C?33 2.../ / / / / / / / / / / / / / / XC000B-b<<<Ee$$ /"C?33 2.../ / / / / / / / / / / / / / / XC000 IB]:5IJJJ I I-binCHHHHI I I I I I I I I I I I I I II I I I I I I I I I I I I I I%	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is   G.1A#G.#A'	'G.*A'	+AG.2"C G. C$	$G.'C$	(>G.&"EG.E	G.E	G.5G"F?3G?GGGG
G.G	G.G	G..G25G2c           	        t                      5 }t          j        |d          5 }|                    dd           |                    dt
          j        d          }t          j        d          |d d <   d d d            n# 1 swxY w Y   t          j        |d          }t          j	        |          }t          |          5 }|                    d	          }t          ddt          j        d          fi          }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr   r  ri   r^   rH  r  r  Tr`  )r   r  r   r  r  rk   r  r  r   r0  r   rd  r)   )	r   r9  r  r  h5r  r   copiedr   s	            rT   test_deepcopyz$TestNetCDF4AlreadyOpen.test_deepcopy  s    	3(XC000 %B""3+++%%c28V<<y}}!!!% % % % % % % % % % % % % % %
 XC000B-b11Ee$$ 3d++"C#ry}})=#>?? 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sZ   D7AB7D7B	D7
B	<D7ADD7D#	#D7&D#	'D77D;>D;Nr   )r   r   r   rS  rV  rZ  r   rV   rT   rP  rP    sT        
/ 
/ 
/ 
/I I I I.3 3 3 3 3 3rV   rP  r6  c                  J    e Zd Zej        	 d	d            Zd
dZd
dZd
dZdS )TestNetCDF4ViaDaskDataNFc              #     K   |i }|i }|                     dd           t                              | ||||          5 }|V  d d d            d S # 1 swxY w Y   d S Nr  rc   )
setdefaultr,  r   r   rK   r   r   r   r   s         rT   r   z TestNetCDF4ViaDaskData.roundtrip  s       KKx,,,&&$[2G
 
 	HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   AAArI   r   c                    d S r   r   r   s    rT   r?  z1TestNetCDF4ViaDaskData.test_unsorted_index_raises  s	     	rV   c                    d S r   r   r   s    rT   rE  z+TestNetCDF4ViaDaskData.test_dataset_caching      rV   c                   t          j        ddd          }t          |dd          }d|j        d<   d|j        d	<   t          j        ddd
          }t          |dd          }d
|j        d<   d|j        d	<   t          ||d          }|                     |          5 }|d         j        d         dk    sJ |d         j        d         d
k    sJ 	 d d d            d S # 1 swxY w Y   d S N)r  r  r  )2   r  )rb   r  rM  ri   )rK   r  rQ   r  r  )r  rg  rH  rG  r`  zerosr   ro   r  r   r   r   ri   rH  r   r   s        rT   test_write_inconsistent_chunksz5TestNetCDF4ViaDaskData.test_write_inconsistent_chunks  b    HZtI>>>1><<<#,
< '1
#$GJd9===1><<<#,
< '1
#$11%%&&^^B 	C6#;'5BBBB#;'5BBBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C   "3C##C'*C'r  r   )	r   r   r   r  r  r   r?  rE  rk  r   rV   rT   r\  r\    s}         NS      
   C C C C C CrV   r\  c                      e Zd ZU dZdZi Zded<   d Zej	        d             Z
d Zej	        d             Zej	        	 dLd            Zej                            dg d          dMd            ZdMdZdMdZdMdZedMd            Zeej                            d          dMd                        ZedMd            ZedMd            ZedMd            ZdMdZedMd            Zd ZdMdZej                            dd	dg          dMd             Z dMd!Z!dMd"Z"dMd#Z#ej        $                    d$%          dM fd&            Z%dM fd'Z&dMd(Z'dMd)Z(dMd*Z)dMd+Z*dMd,Z+dMd-Z,dMd.Z-ej                            d/d0d1g          dMd2            Z.dMd3Z/dMd4Z0edMd5            Z1edMd6            Z2ej                            d7d
d8g          dMd9            Z3edMd:            Z4ej                            dg d          ej                            d;d
d8g          ej                            d<d
d8g          dMd=                                    Z5ej                            d>g d?          dMd@            Z6edMdA            Z7dMdBZ8edMdC            Z9edMdD            Z:edMdE            Z;e<dMdF            Z=dMdGZ>ej                            dH e?             e@dIJ          g          dMdK            ZA xZBS )NZarrBase_ARRAY_DIMENSIONSrt   zdict[str, Any]version_kwargsc                    t           r   r   r   s    rT   create_zarr_targetzZarrBase.create_zarr_target  s    !!rV   c              #     K   |                                  5 }t          j        j        |fddi| j        V  d d d            d S # 1 swxY w Y   d S )Nr   r   )rs  r   	ZarrStore
open_grouprq  r   store_targets     rT   r   zZarrBase.create_store  s      $$&& 	,$/ #&*.*=    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   !AA	A	c                .     |j         dd|i|| j        S )Nr  r   )to_zarrrq  )r   r   rx  rS   s       rT   r   zZarrBase.save  s'    wSS\SVSt?RSSSrV   c              +  z   K   t          j        |fddi|| j        5 }|V  d d d            d S # 1 swxY w Y   d S )Nr   zarr)r  r   rq  )r   rx  rS   r   s       rT   r   zZarrBase.open  s      _
 
!'
+1
595H
 
 	HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   044NFc              #     K   |i }|i }|                                  5 } | j        ||fi |  | j        |fi |5 }|V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   )rs  r   r   )r   rK   r   r   r   rx  r   s          rT   r   zZarrBase.roundtrip  s"      KK$$&& 	,DIdL88K888<77;77 2              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s4   A&AA&A	A&A	A&&A*-A*consolidated)FTNrI   r   c                   |r| j         dk    rt          j        d           t                      }|                     |d|idd|ii          5 }|                     ||           t          ||           d d d            d S # 1 swxY w Y   d S )Nrt   6consolidated metadata is not supported for zarr v3 yetr~  backend_kwargsr   r   )zarr_versionr   r-  rA   r   r  r)   )r   r~  r   r   s       rT   test_roundtrip_consolidatedz$ZarrBase.test_roundtrip_consolidated  s     	SD-11LQRRR#%%^^'6)NL+IJ  
 
 	/ **8V<<<Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   'BB	Bc                   | j         dk    rt          j        d           t                      }|                                 5 } |j        |fddi| j         t          j        t          d          5  t          j
        |fi | j        5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrt   r  r~  Fz+Failed to open Zarr store with consolidatedr   )r  r   r-  rA   rs  rz  rq  r  RuntimeWarningr  	open_zarrr)   )r   r   r  r   s       rT   "test_read_non_consolidated_warningz+ZarrBase.test_read_non_consolidated_warning%  s   q  LQRRR#%%$$&& 	3%HUNNN$:MNNNC   3 3 \%??4+>?? 32$R2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sZ   1C3B?B(B?(B,,B?/B,0B?3C?C	CC	CCCc                    t          j        t          d          5  t          j        t          j                                d d d            d S # 1 swxY w Y   d S )NzNo such file or directory:r   )r   r   FileNotFoundErrorr  r  uuiduuid4r   s    rT   test_non_existent_storez ZarrBase.test_non_existent_store3  s    ],4QRRR 	, 	,LDJLL*+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   'AAAc                   t                      }|                                 5 }|                                 5 }d|i} | j        ||fi | t          |          dk    sJ dd|ii} | j        |fi |5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nchunk_storer   r  )rA   rs  r   lenr   r(   )r   r   rx  r  r   r   r   s          rT   test_with_chunkstorezZarrBase.test_with_chunkstore7  s   #%%$$&& 	+,8O8O8Q8Q 	+U`(+6KDIh<<<<<{##a''''+m[-IJK<77;77 +2R***+ + + + + + + + + + + + + + +	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+sX   C=B)5BB)BB)BB)C)B-	-C0B-	1CCCc                   t                                                      }|                     |dd i          5 }|j                                        D ]"\  }}|j        ||j        v k    sJ |j        J #	 d d d            n# 1 swxY w Y   |                     |di i          5 }|j                                        D ]1\  }}|j        ||j        v k    sJ |j        ||         j        k    sJ 2	 d d d            d S # 1 swxY w Y   d S )Nr  r@  )rA   chunkr   r   r  r  r  r  r   rf  r   r  r  s        rT   test_auto_chunkzZarrBase.test_auto_chunkB  s   #%%++--^^H8T2B^CC 	(v(..00 ( (1|V[(89999x''''	(	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ^^H8R.^AA 	6V(..00 6 61|V[(89999x8A;#555555	6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s$   =BBB(ADD	D)ignore:The specified Dask chunks separatec                   t                                          dddd          }dd i}|                     ||          5 }|j                                        D ]"\  }}|j        ||j        v k    sJ |j        J #	 d d d            n# 1 swxY w Y   t          dd          D ]}|                    |          }d|i}|                     ||          5 }|j                                        D ]1\  }}|j        ||j        v k    sJ |j        ||         j        k    sJ 2	 d d d            n# 1 swxY w Y   ddd	d}|                    |          }|d
did}|                     ||          5 }|j                                        D ]\  }}|j        ||         j        k    sJ |                     |          5 }	|j                                        D ]\  }}|j        ||         j        k    sJ t          ||	           t          |
                                |	
                                           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrI  r  r  r  r@  rt   r=  r  r<  overwrite_encoded_chunksT)r  r  )rA   r  r   r   r  r  r  r  r  r)   r!  )
r   rf  r   r   r  r  r   	rechunkedr  autos
             rT   test_manual_chunkzZarrBase.test_manual_chunkT  s    $%%++Q1,M,MNN (0&6^^H+^>> 	(&(..00 ( (1|V[(89999x''''	(	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( q! 	; 	;A a00I#Q-KkBB ;f",2244 ; ;DAq<A,<====8y|'::::::	;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; Q22NN&N11	 94@
 
 ^^H+^>> 
	=&(..00 7 71x9Q<#666666'' =4",2244 ; ;DAq8y|':::::: ... 		<<<= = = = = = = = = = = = = = =	
	= 
	= 
	= 
	= 
	= 
	= 
	= 
	= 
	= 
	= 
	= 
	= 
	= 
	= 
	= 
	= 
	= 
	=s]   =BBBAD22D6	9D6	8AI%A<II%I	I%I	I%%I),I)c                   t                                          dddd          }dddif}|D ]}d|i}t          j        t                    5  |                     ||          5 }|j                                        D ]\  }}|j        ||j	        v k    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ddid	d
ii f}|D ]}d|i}t                      5  |                     ||          5 }|j                                        D ]\  }}|j        ||j	        v k    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d S )Nr  rI  r  rt   r  )rI  rI  rt   rs   r  r@  r  )r=  r  )rA   r  r   r  r?  r   r   r  r  r  r*   )	r   rf  
bad_chunksr  rS   r   r  r  good_chunkss	            rT   test_warning_on_bad_chunksz#ZarrBase.test_warning_on_bad_chunks  s   #%%++Q1,M,MNN&,/0
  	B 	BF'Fk** B B^^H&^AA BV & 0 6 6 8 8 B B1 |V[0@AAAAABB B B B B B B B B B B B B B BB B B B B B B B B B B B B B B 5;A;@PRT2U! 	B 	BF'F#%% B B^^H&^AA BV & 0 6 6 8 8 B B1 |V[0@AAAAABB B B B B B B B B B B B B B BB B B B B B B B B B B B B B B	B 	Bsl   B=%4B&B=&B**B=-B*.B==C	C	(E 4E5EEEE	EE	E	c                   t                                                      }t          j        t                    5  |                     |ddi          5 }|j                                        D ]1\  }}|j        ||j	        v k    sJ |j
        ||         j
        k    sJ 2	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t                    5  |                     |ddi          5 }|j                                        D ]"\  }}|j        ||j	        v k    sJ |j
        J #	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N
auto_chunkTr@  F)rA   r  r   r   r  r   r   r  r  r  r  r  s        rT   test_deprecate_auto_chunkz"ZarrBase.test_deprecate_auto_chunk  s   #%%++--]9%% 	: 	:|T6JKK :v",2244 : :DAq<A,<====8x{'999999	:: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: ]9%% 	, 	,|U6KLL ,PV",2244 , ,DAq<A,<====8++++	,, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,sl   CAB-!C-B1	1C4B1	5CCC(E$=E E$E	E$E	E$$E(+E(c                B   t                                          dddd          }|                     |di i          5 }|j                                        D ],\  }}t          |           |j        ||         j        k    sJ -	 d d d            d S # 1 swxY w Y   d S )NrI  r  r  r  r@  )rA   r  r   	data_varsr  printr  r  s        rT   test_write_uneven_dask_chunksz&ZarrBase.test_write_uneven_dask_chunks  s     $%%++Q1,M,MNN^^H8R.^AA 	4V(..00 4 41ax6!9#3333334	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   ABBBc                   t                      }d}|d         j                            d|i           |                     |          5 }||d         j        d         k    sJ 	 d d d            n# 1 swxY w Y   |d         j                            ddi           t	          j        t                    5  |                     |          5 }	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  r  )r<  g      @)rA   ro   r5  r   r   r   r  )r   rK   r  r   s       rT   test_chunk_encodingzZarrBase.test_chunk_encoding  s     !!V$$h%7888^^D!! 	?VVF^4X>>>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	V$$h%9:::]9%% 	 	%%               	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   A//A36A35C1CC1C	C1 C	!C11C58C5c                x
   t          j        t          j        d          dd                                          }|                    ddi          }|                     |          5 }d|d         j        d         k    sJ 	 d d d            n# 1 swxY w Y   |                    ddi          }t          j	        t          d	
          5  |                     |          5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    ddi          }d|j        j        d<   t          j	        t          d
          5  |                     |          5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |ddi          5 }	 d d d            n# 1 swxY w Y   |                    ddi          }d|j        j        d<   |                     |          5 }	 d d d            n# 1 swxY w Y   |                    ddi          }d|j        j        d<   |                     |          5 }	 d d d            n# 1 swxY w Y   |                    ddi          }d|j        j        d<   |                     |          5 }	 d d d            n# 1 swxY w Y   |                    ddi          }|                     |          5 }d|d         j        d         k    sJ 	 d d d            n# 1 swxY w Y   |                     |          5 }|                     |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    ddi          }d|j        j        d<   t          j	        t          d
          5  |                     |          5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   dD ]k}|d         j                            d|i           |                     |          5 }d|d         j        d         k    sJ 	 d d d            n# 1 swxY w Y   l|d         j                            ddi           t          j	        t          d
          5  |                     |          5 }	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |ddi          5 }	 d d d            d S # 1 swxY w Y   d S )N   ri   r  r  rQ   r  r  r  )r<  r  rI  zuniform chunk sizes.r   )r=  znamed 'var1' would overlapsafe_chunksFru  r  )rI  rI  r=  r  )rI  r=  rI  )r<  r<  rt   r  )rI  r<  rI  rs   z"would overlap multiple dask chunks)r  r  r<  )r  r   rk   r  r@  r  r   ro   r   r   r   r  r   r)   r5  )	r   r   	ds_chunk4r   ds_chunk_irregbadencgoodencrf  	chunk_encs	            rT   test_chunk_encoding_with_daskz&ZarrBase.test_chunk_encoding_with_dask  s~	    \29R==&AAALLNN HHc1X&&	^^I&& 	=&6&>28<<<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 3	"233]:-DEEE 	 	// 6              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 3(##)-X&].6STTT 	 	'' 6              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ^^F0F^GG 	6	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ((C8$$*.h'^^G$$ 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ((C+,,*.h'^^G$$ 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ((C+,,*.h'^^G$$ 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 3	"233^^N++ 	=v6&>28<<<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= ^^N++ 	3x)) 3V 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3
 3-..)-X&]'L
 
 
 	 	 '' 6              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ! 	A 	AIf&--x.CDDD	** Afvf~6x@@@@@@A A A A A A A A A A A A A A A
 	&"))8Q-888].6STTT 	 		** f              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ^^IM53I^JJ 	f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s  (BBBD"C0$D0C4	4D7C4	8DDDF)E7+F7E;	;F>E;	?FFF2G  GGHHHI((I,/I,.J<<K K 3LL!L:NM-!N-M1	1N4M1	5NNNP&O4(P4O8	8P;O8	<PPPQ88Q<	?Q<	S<S%S<%S)	)S<,S)	-S<<T T  T//T36T3c                    t          d          fdj        D             }|                                 5 }                    ||           d d d            d S # 1 swxY w Y   d S )Nr  c                0    i | ]}|i |         j         S r   rf  )rY   r  r   s     rT   r  z/ZarrBase.test_drop_encoding.<locals>.<dictcomp>  s'    AAAqQ*2a5>*AAArV   rf  )rU   r  rs  rz  )r   	encodingsr  r   s      @rT   test_drop_encodingzZarrBase.test_drop_encoding  s    !.11AAAABLAAA	$$&& 	2%JJuyJ111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   AA!$A!c                   t                      }|                                 5 }|                    |           |j        }|j                                        D ]:}||         j        | j                 }|t          ||         j	                  k    sJ ;t          j        |          5  |j                                        D ]}| j        ||         j        vsJ 	 d d d            n# 1 swxY w Y   |j        j        | j        = t          j        t                    5  t          j        |          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   )rA   r   r   r   r   keysr  DIMENSION_KEYr3  r  r  r  r  r   r   rl  )r   r   r  
zarr_groupvarr  s         rT   test_hidden_zarr_keyszZarrBase.test_hidden_zarr_keys  s   #%%   	E""5)))J
  )..00 8 8!#,T-?@tHSM$67777777e$$ I I#-2244 I IC-Xc]5HHHHHHII I I I I I I I I I I I I I I %d&89x((  \%((                              %	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s~   BE0(3C(E0(C,	,E0/C,	0.E0E3E5EEEE	EE0E	E0E	 E00E47E4r  group1c                   t                      }|                     |d|dd|i          5 }t          ||           d d d            n# 1 swxY w Y   |                     |d|dd|i          5 }t          ||           d d d            n# 1 swxY w Y   |                                 5 }|                     ||           |                     ||d|           |                     ||          5 }t          ||           t          j        t                    5  |                     ||d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |d|dd|i          5 }t          ||           d d d            n# 1 swxY w Y   t                      \  }}}|                                 5 } |j
        |fd|d| j          |j
        |fd	|d
| j         t          j        ||gd	          }t          j        |f|dd| j        }t          ||           d d d            d S # 1 swxY w Y   d S )Nr   )r   r  r  r  zw-r  r  r   r  )
append_dimr  r  r|  )r  r   )rA   r   r)   rs  r   r   r   r   r   r@   rz  rq  r  concatr   )	r   r  rf  r   r  r   ds_to_appendr  rx  s	            rT   test_write_persistence_modesz%ZarrBase.test_write_persistence_modes3  s   #%% ^^!$u55 %(  
 
 	/ Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ ^^!%66 %(  
 
 	/ Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ $$&& 	:%IIh&&&IIhCuI===5.. :& 6222]:.. : :IIhDI999: : : : : : : : : : : : : : :: : : : : : : : : : : : : : :		: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: ^^!$u55 %(  
 
 	/ Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 677L!$$&& 		/,BJ|R#URRd>QRRR L )/u @D@S   y"l!3@@@H_$)& <@<O F Xv...		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/ 		/s   A		AA1BBB-AE14*EE7EEE
EEE1E	E1!E	"E11E58E5F66F:=F:'A/I##I'*I'c                b   t                      }dd l}|                    ddd          }t          dd|ii          }|                     ||	          5 }|d         j        d         }|                                |                                k    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nr   zstdrI  rt   )cnameclevelr  r  
compressorrf  ru  )rA   r|  Bloscr  r   ro   
get_config)r   rf  r|  
blosc_compr   r   r   s          rT   test_compressor_encodingz!ZarrBase.test_compressor_encodingf  s   #%%ZZfQZBB
VlJ-G$HIII^^H+^>> 	B"Z(6F$$&&**?*?*A*AAAAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   A B$$B(+B(c                    t                      }d}|                     |d|id|i          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nzsome/random/pathr  r  r   )r   rf  r  r   s       rT   rV  zZarrBase.test_groupr  s    #%%"^^7E"2%@P  
 
 	/Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AAAc                    d S r   r   r   s    rT   rz  z/ZarrBase.test_encoding_kwarg_fixed_width_stringz  rd  rV   zZarr caching not implementedr  c                H    t                                                       d S r   )rI  rE  rJ  s    rT   rE  zZarrBase.test_dataset_caching  s    $$&&&&&rV   c                H    t                                                       d S r   )rI  r  rJ  s    rT   r  zZarrBase.test_append_write  s    !!#####rV   c                z   t          dddgfi          }t          dddgfi          }|                                 5 } |j        |fi | j          |j        |fddi| j         |                     |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr*  ri   rs   rt   r   r+)r   rs  rz  rq  r   r)   )r   rf  rQ  r  r   s        rT   #test_append_with_mode_rplus_successz,ZarrBase.test_append_with_mode_rplus_success  sZ   EC!:.//EC!:.//$$&& 	3%HU::d&9:::HUEEE1DEEE5!! 3V 2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s5   >B0;BB0B	B0B	 B00B47B4c                f   t          dddgfi          }t          dddgfi          }|                                 5 } |j        |fi | j         t	          j        t          d          5   |j        |fdd	i| j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr*  ri   rs   rh  rt   z+dataset contains non-pre-existing variablesr   r   r  )r   rs  rz  rq  r   r   r   )r   rf  rQ  r  s       rT   !test_append_with_mode_rplus_failsz*ZarrBase.test_append_with_mode_rplus_fails  s~   EC!:.//EC!:.//$$&& 	J%HU::d&9:::"O   J J ! IITIT5HIIIJ J J J J J J J J J J J J J J	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js5   /B&,BB&B	B&B	B&&B*-B*c                >   t                      \  }}}|                                 5 } |j        |fddi| j         t	          j        t          d          5   |j        |fddi| j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   z.does not match any existing dataset dimensionsr   r  notvalidr@   rs  rz  rq  r   r   r   r   r   r  r  rx  s        rT   r  z,ZarrBase.test_append_with_invalid_dim_raises  sO   577L!$$&& 	,BJ|EE#E1DEEE"R     %$  -7;?;N                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	5   1BA:.B:A>	>BA>	BBBc                b   |                                  5 } t          dddgfi          j        |fddi| j         t	          j        t          d          5   t          ddd	gfi          j        |fdd
i| j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr*  ri   rs   r   r   zdifferent dimension namesr   rH  rt   r   )rs  r   rz  rq  r   r   r   rw  s     rT   test_append_with_no_dims_raisesz(ZarrBase.test_append_with_no_dims_raises  sl   $$&& 	,0GUS1#J'((0 #&*.*=   z1LMMM  4qc
+,,4  '*.2.A                		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   AB$(B B$B	B$B	B$$B(+B(c                >   t                      \  }}}|                                 5 } |j        |fddi| j         t	          j        t          d          5   |j        |fddi| j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   zdifferent dimension sizesr   r   r  r  s        rT   *test_append_with_append_dim_not_set_raisesz3ZarrBase.test_append_with_append_dim_not_set_raises  s[   577L!$$&& 	T,BJ|EE#E1DEEEz1LMMM T T$$\SSSt?RSSST T T T T T T T T T T T T T T	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	Tr  c                @   t                      \  }}}|                                 5 } |j        |fddi| j         t	          j        t          d          5   |j        |fddd| j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   zcannot set append_dim unlessr   r  )r   r  r  r  s        rT   "test_append_with_mode_not_a_raisesz+ZarrBase.test_append_with_mode_not_a_raises  sH   577L!$$&& 	,BJ|EE#E1DEEEz1OPPP  $$ '*v AEAT                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   1BA;/B;A?	?BA?	BBBc           	     H   t                      \  }}}|                                 5 } |j        |fddi| j         t	          j        t          d          5   |j        |fdddd iid| j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr   r   zbut encoding was providedr   r  r`  r  )r  ro   r  r  s        rT   )test_append_with_existing_encoding_raisesz2ZarrBase.test_append_with_existing_encoding_raises  sU   577L!$$&& 	,BJ|EE#E1DEEEz1LMMM  $$ %"\4$89  )	                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   1BA?3B?B	BB	BBBrb   r  r  c                >   t          |          \  }}|                                 5 } |j        |fddi| j         t	          j        t          d          5   |j        |fddi| j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   zMismatched dtypes for variabler   r  r  )r?   rs  rz  rq  r   r   r   )r   rb   r   r  rx  s        rT   )test_append_string_length_mismatch_raisesz2ZarrBase.test_append_string_length_mismatch_raises  sF   I%PPL$$&& 	,BJ|EE#E1DEEEz1QRRR  $$  -37;7J                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                d   t                      \  }}}|                                 5 }dd l}|                                }dd|ii} |j        |fd|d| j          |j        |fddi| j         t          j        |fdd	i| j        }|d         j        d         }	|		                                |	                                k    sJ t          t          j        |fdd	i| j                                        t          j        ||gd
                     d d d            d S # 1 swxY w Y   d S )Nr   r`  r  r   )r   ro   r  r  r   r|  r  )r@   rs  r|  r  rz  rq  r  r   ro   r  r)   r$  r  )
r   r   r  r  rx  r|  r  ro   	actual_dsr  s
             rT   .test_check_encoding_is_consistent_after_appendz7ZarrBase.test_check_encoding_is_consistent_after_append  s   577L! $$&& 	,KKKJ|Z89HBJ|X#XXDDWXXX L XX&XDDWXXX %+/3/B I (o6|DO"--//:3H3H3J3JJJJJ  )/373F '))	2|,&999	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   C1D%%D),D)c           	        t                      \  }}}|                                 5 } t          j        ||gd          j        |fddi| j          |j        |fddi| j         t          j        ||gd          }|d         |d<   t          |t          j        |fddi| j                   d d d            d S # 1 swxY w Y   d S )	Nr  r  r   r   r   new_varr   r|  )r@   rs  r  r  rz  rq  r)   r   )r   r   r  ds_with_new_varrx  combineds         rT   test_append_with_new_variablez&ZarrBase.test_append_with_new_variable  sN   ,C,E,E)L/ $$&& 
	,=BIr<(f555= #&*.*=   $O#LRRsRd>QRRRy"l!3@@@H"1)"<HYSSVSt?RSS  
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s   BB??CCc                ~   ddl m} t                                                      }|                                 5 }|                     ||d          }t          ||          sJ t          j        t                    5  | 
                    |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                 | 
                    |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   DelayedFr$  )dask.delayedr  rA   r  rs  r   r	  r   r   r   r   r)   r$  )r   r  rf  r  delayed_objr   s         rT   $test_to_zarr_compute_false_roundtripz-ZarrBase.test_to_zarr_compute_false_roundtrip  s.   ((((((#%%++--$$&& 	3%))HeU)CCKk733333 ~.. 7 7YYu%% 7$Xv6667 7 7 7 7 7 7 7 7 7 7 7 7 7 77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 !!!5!! 3V 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s~   AD2?C	B2&C	2B66C	9B6:C	=D2	C	D2C	,D2=DD2D	D2!D	"D22D69D6c           
     B   ddl m} t                      \  }}}|                                |                                }}t	          j        t                    5  |                                 5 }|                     ||dd          }t          ||          sJ t	          j
        t                    5  |                     |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                 |                     |          5 }t          ||           d d d            n# 1 swxY w Y   |                     ||dd          }t          ||          sJ t	          j
        t                    5  |                     |          5 }t          t          j        ||gd          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                 |                     |          5 }t          t          j        ||gd          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr   r  Fr   )r$  r   r  )r$  r  r  )r  r  r@   r  r   r  r    rs  r   r	  r   r   r   r)   r$  r  r  )r   r  r   r  r  r  r  r   s           rT   +test_to_zarr_append_compute_false_roundtripz4ZarrBase.test_to_zarr_append_compute_false_roundtrip	  s   ((((((577L!88::|'9'9';';L\.// 	X 	X((** Xe"iiE5siKK!+w77777]>22 5 55)) 5V(V4445 5 5 5 5 5 5 5 5 5 5 5 5 5 55 5 5 5 5 5 5 5 5 5 5 5 5 5 5 ##%%%YYu%% 1$R0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 #ii %6 (   "+w77777]>22  5)) V(Ir<&8fEEEv                               ##%%%YYu%% X$RYL/Av%N%N%NPVWWWX X X X X X X X X X X X X X X5X X X X X X X X X X X X X X X	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	Xs  J/AI<4C>
C'	C>'C++C>.C+/C>2I<>DI<D,I<2EI<EI<EAI<G>4'G'	G>'G++G>.G+/G>2I<>HI<H,I<2'I%I<%I))I<,I)-I<0J<J 	 JJ 	JJJr  Tc                >   |rt           st          j        d           t          dt	          j        d          fdg dfd          }|r|                    i           }|                     |          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nrequires daskr  r<  r   r   )rs   rt   r<  r  r  rG  )	r+   r   rL  r   rk   emptyr  r   r)   )r   r  r   	ds_reloads       rT   test_save_emptydimzZarrBase.test_save_emptydim5	  s     	) 	)K(((J(8(89ooo@VWWXX 	"B^^B 	,9R+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,   4BBBc                f   t          ddt          j        d          fi                              ddi          }t	                      5  |                     |t          ddi                    5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nri   r  r  r   rs   r  r@  )r   rk   r  r  r*   r   r  r)   )r   r   r  s      rT   .test_no_warning_from_open_emptydim_with_chunksz7ZarrBase.test_no_warning_from_open_emptydim_with_chunks?	  s,   cJ(8(89:;;AA3(KK!! 	0 	0S!H0E0E0EFF 0) Y///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s6   	(B&1BB&B	B&B	B&&B*-B*r$  use_daskc           
        |s|st           st          j        d           |r| j        dk    rt          j        d           t          ddt          j        d          fi          }t          ddt          j        dd          fi          }|r*|	                    d          }|	                    d          }| 
                                5 } |j        |f||dt          d	          id
| j         |rAt          j        |fd|i| j        5 }t!          ||           d d d            n# 1 swxY w Y   t#          ddd          D ]@}dt%          ||dz             i}	 |                    |	          j        |f|	|d| j         At          j        |fd|i| j        5 }t!          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  rt   r  ur  r^   rs      r  )r~  r$  ro   r~  r   ri   )regionr~  )r+   r   rL  r  r-  r   rk   ri  r  r  rs  rz  r  rq  r  r  r)   r  r  r  )
r   r~  r$  r   ri  nonzerosr  r   r   r  s
             rT   test_write_regionzZarrBase.test_write_regionF	  s     	)G 	)X 	)K((( 	SD-11LQRRRvrx||4566C&")Ar*:*:!;<== 	)KKNNE~~a((H$$&& 	3%EM)t1~~~.	 
 %    4\ (48<8K  4$VU3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 1b!__  uQA/-f%%-!!-  )	     $0484G  3 2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3+	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s\   AGD, G,D0	0G3D0	4A.G"F?3G?G	GG	GGGr   )Nr  r   c                8   t          ddt          j        d          fi          }t          ddt          j        dd          fi          }|                                 5 } |j        |fi | j         dt          d          idt          dd          ifD ]+} |                    |          j        |f||d| j         ,t          j
        |fi | j        5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr  r  r^   rs   r  ri   r<  r  r   )r   rk   ri  r  rs  rz  rq  r  r  r  r  r)   )r   r   ri  r  r  r  r   s          rT   test_write_region_modezZarrBase.test_write_region_modep	  s   vrx||4566C&")Ar*:*:!;<==$$&& 	3%EM%774#6777q?S%2,,,?@  -f%%-"(t 7;7J    e;;t':;; 3v 2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s7    A:DC7+D7C;	;D>C;	?DDDc           	        t          ddt          j        d          ddifiddi          }t          ddt          j        d          ddifiddi          }t          ddt          j        d          ddifiddi          }t          ddt          j        d          ddifiddi          }|                                 5 } |j        |fd	d
i| j          |j        |fddi| j         |                     |          5 }t          ||           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   |                                 5 } |j        |fd	d
i| j          |j        |fddi| j         |                     |          5 }t          ||           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   |                                 5 } |j        |fd	d
i| j          |j        |fddt          d          ii| j         |                     |          5 }t          ||           ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z?Metadata should be overridden if mode="a" but not in mode="r+".r  r  r^   rA  rf  globalrB  rQ  r$  Fr   r   Nr  r  ri   )
r   rk   ri  r  rs  rz  rq  r   r)   r  )r   rf  both_modifiedglobal_modifiedonly_new_datar  r   s          rT   (test_write_preexisting_override_metadataz1ZarrBase.test_write_preexisting_override_metadata}	  sw    628B<<*j)ABCZ(
 
 
  6272;;Z(@ABZ(
 
 
 "6272;;Z(@ABZ(
 
 
  6272;;Z(@ABZ(
 
 

 $$&& 	:%HUIIEIT5HIII!M!%IIcIT5HIII5!! :V !999	: : : : : : : : : : : : : : :	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: $$&& 	8%HUIIEIT5HIII!M!%JJdJd6IJJJ5!! 8V 7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 $$&& 	8%HUIIEIT5HIII!M! "E$KK0484G   5!! 8V 7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   A D9D"D9"D&	&D9)D&	*D99D= D=A GF5)G5F9	9G<F9	=GGG+AI/:II/I	I/I	I//I36I3c                ~	    t          ddt          j        d          fi          t          ddt          j        ddg          fi          }t          j        f fd	            }t          ddt          j        g d          fi          } ||          5 } |j        |fdd	t          d
          ii j         d d d            n# 1 swxY w Y    |            5 }t          j
        t          t          j        d                    5   j        |fd	t          d           idd j         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 }t          j
        t          d          5   j        |fdt          d           i j         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 }t          j
        t          d          5   |j        |fdd	ddgii j         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 }t          j
        t          d          5   |j        |fdd	t          d d d
          ii j         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 }t          j
        t          d          5   j        |fddt          d           ii j         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 }t          j
        t          d          5   |                    d
          j        |fdd	t          d
          ii j         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 }t          j
        t          d          5   j        |fd	t          d           id	d j         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    |            5 }t          j
        t          d          5   |j        |fdd	t          d          ii j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  r<  r^   r  c              3    K                                    5 } j        |fi j         |V                      |          5 }t	          ||            d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   )rs  rz  rq  r   r)   )r   r  r   rK   r   s      rT   setup_and_verify_storezAZarrBase.test_write_region_errors.<locals>.setup_and_verify_store	  s     ((** 7eU::d&9:::YYu%% 7$VX6667 7 7 7 7 7 7 7 7 7 7 7 7 7 77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s5   -A:A"A:"A&	&A:)A&	*A::A>A>)r^   r  rt   rI  r  r  ri   rt   z9cannot set region unless mode='a', mode='r+' or mode=Noner   r   r  zmust be a dictzmust be slice objectsr   rs   zstep on all slicesz4all keys in ``region`` are not in Dataset dimensionsrH  zPall variables in the dataset to write must have at least one dimension in common)r  z&cannot list the same dimension in both)r  r  z:variable 'u' already exists with different dimension sizesrI  )r   rk   r  rl   r  r  rz  r  rq  r   r   r   reescaper  assign)r   r  r  r   r  rK   s   `    @rT   test_write_region_errorsz!ZarrBase.test_write_region_errors	  s=
   fbill3455vrxR'9'9:;<<		",0 	7 	7 	7 	7 	7 	7 
#	"	7 C&"(3D3D3D*E*E!FGHH##H-- 	PEM%OOeAhhO4;NOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P $#%% 		iO      #&d"43 BFBU                		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 $#%% 	Oy0ABBB O OUNN5;;N$:MNNNO O O O O O O O O O O O O O O	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O $#%% 	Ry0HIII R ReQQS1a&MQT=PQQQ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 $#%% 	z1FGGG   #&dD!(<(<"=AEAT                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $#%% 	VM   V V UUUCt+=UATUUU	V V V V V V V V V V V V V V V	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V $#%% 	i     *q!!) #&a/595H  	              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $#%% 		"K     t-"  )	                		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 $#%% 	TS   T T eSSS%((OSt?RSSS	T T T T T T T T T T T T T T T	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	Ts  %CCC!.E&E5EE	EE		EEE-G	#F8,G8F<	<G?F<	 GGG$H= H&H=&H*	*H=-H*	.H==IIJ8.'J!J8!J%	%J8(J%	)J88J<?J<L1)%LL1L	L1!L	"L11L58L5N>"9N'N>'N+	+N>.N+	/N>>OOP8/&P!P8!P%	%P8(P%	)P88P<?P<R2)%RR2R	R2!R	"R22R69R6c                   d\  }}}t          j        i t          j        |          t          j        |          t          j        |          d          }t          j        dt          j        |||f                    |d<   |                    dddd          }|                     |          5 }t          ||           |                     |	                    d	                    5 }t          ||	                    d	                     d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
N)r  r  r<  )ri   rH  rj   r  r  rs   rt   )rj   ri   rH  r   r  )
r  r   rk   r  Variableri  r  r   r(   r  )r   nxnyntrf  ds1r=  s          rT   test_encoding_chunksizesz!ZarrBase.test_encoding_chunksizes	  s    
B:RYr]]2RYr]]SS
 
 
 ORXr2rl5K5KLL>>":":;;^^H%% 	6h'''1.. 6#S(--!-"4"45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s6   2:D5,%DD5D!	!D5$D!	%D55D9<D9c                P   t          j        dt          j        t          j                            d          d          i                              ddi          }|                     |ddd	dd
giii          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nri   )r=  r  r  r  r  r   rI  ro   r  rt   ru  )r  r   r   rk   r  r  r   r(   r   rf  r  s      rT   ,test_chunk_encoding_with_partial_dask_chunksz5ZarrBase.test_chunk_encoding_with_partial_dask_chunks
  s    :",ry//V/<<:NNNO
 

%a// 	 ^^:hA5G/H"I  
 
 	(h'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   =BB"Bc                    t          j        ddg dfi                              ddi          }|                     |ddddgiii          5 }t	          ||           d d d            d S # 1 swxY w Y   d S )	Nr   ri   rs   rt   rI  r  rt   ro   r  rs   ru  )r  r   r  r   r(   r  s      rT   +test_chunk_encoding_with_larger_dask_chunksz4ZarrBase.test_chunk_encoding_with_larger_dask_chunks
  s    :sS,,,$7899??aII^^:h_/E"F  
 
 	(h'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   A,,A03A0c                   t                      }|                                 5 } |j        |fi | j         t	          j        |fi | j        }t          ||           t	          j        |fddi| j        }t          j        j        	                    |j
        j                  sJ 	 d d d            d S # 1 swxY w Y   d S )N
use_cftimeT)rA   rs  rz  rq  r  r  r)   codingrx  contains_cftime_datetimesr  rA  )r   r   rx  ds_ads_bs        rT   test_open_zarr_use_cftimez"ZarrBase.test_open_zarr_use_cftime
  s   $$&& 	Q,BJ|;;t':;;;<DD0CDDDR&&&<UUUATUUD9?<<TY=OPPPPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs   BB55B9<B9c                   t                      }|                                 5 } |j        |fddi| j         t	          j        |fi | j        }|                    |j        d         dk    d                              d          }|                                 5 } |j        |fddi| j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r  r   T)drop)	rA   rs  rz  rq  r  r  wherer  squeeze)r   r   initial_storer  ds_selfinal_stores         rT   test_write_read_select_writez%ZarrBase.test_write_read_select_write#
  s    $$&& 	M-BJ}FF3F$2EFFF,}DD0CDDC YYsz&1S8tYDDLLVTTF((** Mk{LLL8KLLLM M M M M M M M M M M M M M M	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms6   A:CB?3C?C	CC	CCCr  r*  rQ   c           	        |                                 }ddi|j        d<   t          |t                    r|n|                                }|                                 5 } |j        |fi | j         t          |t          j
        |fi | j                   d d d            n# 1 swxY w Y   t                      |j        d<   t          |t                    r|n|                                }|                                 5 }t          j        t          d          5   |j        |fi | j         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   valuegoodbadz#Invalid attribute in Dataset.attrs.r   )rd  r  r	  r   r@  rs  rz  rq  r)   r  r  r   r   r   r  )r   r  r   rx  s       rT   test_attributeszZarrBase.test_attributes1
  sK   hhjj"G,	&sG,,BSS#..2B2B$$&& 	T,BJ|;;t':;;;Rl!R!Rd>Q!R!RSSS	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T %;;	%sG,,BSS#..2B2B$$&& 	@,y0VWWW @ @
<??4+>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@sH    9B%%B),B)E!E5EE	EE		EE Er  r   )Cr   r   r   r  r  rq  r   rs  r  r  r   r   r   r   r   r   r  r  r  r  r  r1   r  r  r  r  r  r  r  r  r  r  r  r  rV  rz  r-  rE  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r   r#  r0   r*  r2  r   r   r8  rM  rN  s   @rT   ro  ro    s        'ML%'N''''" " "   T T T    NS
 
 
 
 [^-@-@-@AA
/ 
/ 
/ BA
/3 3 3 3, , , ,	+ 	+ 	+ 	+ 6 6 6 ]6" [ KLL(= (= (= ML ](=T B B B ]B* , , , ],$ 4 4 4 ]4     P P P ]Pd2 2 2   0 [WtX&6770/ 0/ 0/ 870/d
B 
B 
B 
B/ / / /    [<==' ' ' ' ' >='$ $ $ $ $ $3 3 3 3J J J J	 	 	 	   T T T T   
 
 
 
 [WsCj11   21   .     3 3 3 ]3& "X "X "X ]"XH [Wudm44, , , 54, 0 0 0 ]0 [^-@-@-@AA[Y66[Z%77%3 %3 %3 87 76 BA%3N [V%6%6%677
3 
3 
3 87
3 )8 )8 )8 ])8VJT JT JT JTX 6 6 6 ]6 ( ( ( ]( ( ( ( ]( Q Q Q _QM M M M [UWWYY		u0E0E0E$FGG@ @ @ HG@ @ @ @ @rV   ro  c                  .    e Zd Zej        d             ZdS )TestZarrDictStorec              #  F   K   t           rt          i           V  d S i V  d S r   )have_zarr_kvstorerB   r   s    rT   rs  z$TestZarrDictStore.create_zarr_targetD
  s3       	"++HHHHHrV   Nr   r   r   r  r  rs  r   rV   rT   r:  r:  B
  s1            rV   r:  c                  N    e Zd Zej        d             Zej        d             ZdS )TestZarrDirectoryStorec              #  d   K   t          d          5 }|V  d d d            d S # 1 swxY w Y   d S )N.zarrr  r   r   tmps     rT   rs  z)TestZarrDirectoryStore.create_zarr_targetN
  s      G,,, 	III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   %))c              #     K   |                                  5 }t          j                            |d          }t          r|j        j        j        dk    sJ |V  d d d            d S # 1 swxY w Y   d S )Nr   r  rt   )rs  r   ru  rv  have_zarr_v3r  r  _store_version)r   rx  r  s      rT   r   z#TestZarrDirectoryStore.create_storeS
  s      $$&& 	,&11,S1IIE B'-<AAAAKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA((A,/A,N)r   r   r   r  r  rs  r   r   rV   rT   r?  r?  L
  sP               rV   r?  c                      e Zd ZdZd ZdS )
ZarrBaseV3rI  c                N   t          ddd          }t          j        t                    5  t          j        t
                    5  |                     |          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rs   r  r  )r   r   r  r    r   r   r   )r   rf  s     rT   r  z0ZarrBaseV3.test_roundtrip_coordinates_with_spacea
  s^   !"4"4555\.// 	 	z**  ^^H--                              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sY   BBA+B+A//B2A/3B6BB	B	B	
BB!BN)r   r   r   r  r  r   rV   rT   rK  rK  ^
  s(        L    rV   rK  zrequires zarr version 3r  c                  .    e Zd Zej        d             ZdS )TestZarrKVStoreV3c              #  ,   K   t          i           V  d S r   )rD   r   s    rT   rs  z$TestZarrKVStoreV3.create_zarr_targetl
  s      mmrV   Nr=  r   rV   rT   rN  rN  j
  s1            rV   rN  c                  .    e Zd Zej        d             ZdS )TestZarrDirectoryStoreV3c              #  ~   K   t          d          5 }t          |          V  d d d            d S # 1 swxY w Y   d S Nz.zr3rB  )r   rC   rD  s     rT   rs  z+TestZarrDirectoryStoreV3.create_zarr_targets
  s      F+++ 	(s"3'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   266Nr=  r   rV   rT   rQ  rQ  q
  s1        ( ( ( ( (rV   rQ  c                  6    e Zd ZddiZej        d             ZdS ) TestZarrDirectoryStoreV3FromPathr  rI  c              #  d   K   t          d          5 }|V  d d d            d S # 1 swxY w Y   d S rS  rC  rD  s     rT   rs  z3TestZarrDirectoryStoreV3FromPath.create_zarr_target
  s      F+++ 	sIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	rF  N)r   r   r   rq  r  r  rs  r   rV   rT   rU  rU  y
  s=         %a(N    rV   rU  r   c                     t          j        d           t                      } d}|                     |ddi           t	          j        |ddi          }t          | |           d S )Naiobotocorezmemory://test.zarrtest
zarr_write)storage_options	zarr_read)r   importorskiprA   rz  r  r  r)   )r   rx  r(  s      rT   test_zarr_storage_optionsr^  
  so     &&&			B'LJJ|fl-CJDDD<v{6KLLLDRrV   c                  N    e Zd ZU dZded<   ej        d             Zd
dZd
dZ	d	S )TestScipyInMemoryDatascipyrG   r   c              #  T   K   t                      }t          j        |d          V  d S Nr   r   r   ScipyDataStorer   fobjs     rT   r   z"TestScipyInMemoryData.create_store
  .      yy%dC0000000rV   rI   r   c                P    t          ddi                              d           d S )Nr*  r+  ra  r  )r   r   r   s    rT   test_to_netcdf_explicit_enginez4TestScipyInMemoryData.test_to_netcdf_explicit_engine
  s+    &&g&66666rV   c                    t          ddg dfi          }|                                }|                     |          5 }t          j        t          j        |                    }t          ||           d d d            d S # 1 swxY w Y   d S )Nr*  ri   r  )r   r   r   r/  r1  r0  r)   )r   rK   rg  r   r8  s        rT   test_bytes_picklez'TestScipyInMemoryData.test_bytes_pickle
  s    YYY/011~~YYt__ 	.V\"%5%566IY---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   7BB
BNr   )
r   r   r   r   r   r  r  r   rj  rl  r   rV   rT   r`  r`  
  sl         $F$$$$1 1 17 7 7 7. . . . . .rV   r`  c                      e Zd ZU dZded<   ej        d             Zej        	 dd            Ze	j
                            d	          dd            Ze	j
                            d	          dd            ZdS )TestScipyFileObjectra  rG   r   c              #  T   K   t                      }t          j        |d          V  d S rc  rd  rf  s     rT   r   z TestScipyFileObject.create_store
  rh  rV   NFc              #  z  K   |i }|i }t                      5 }t          |d          5 } | j        ||fi | d d d            n# 1 swxY w Y   t          |d          5 } | j        |fi |5 }|V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nwbrb)r   r   r   )r   rK   r   r   r   r9  rg  r   s           rT   r   zTestScipyFileObject.roundtrip
  s      KK 	(h%% 2	$11[1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2h%% TYq00K00 BHHH                            	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s{   B0AB0A
	
B0A
	B0!B0B5BBBB	BB0B	B0B	 B00B47B4zcannot pickle file objectsr  rI   r   c                    d S r   r   r   s    rT   r5  zTestScipyFileObject.test_pickle
  rd  rV   c                    d S r   r   r   s    rT   r9  z)TestScipyFileObject.test_pickle_dataarray
  rd  rV   r  r   )r   r   r   r   r   r  r  r   r   r   r   rL  r5  r9  r   rV   rT   rn  rn  
  s         $F$$$$1 1 1 NS    [9::   ;: [9::   ;:  rV   rn  c                  n    e Zd ZU dZded<   ej        d             ZddZddZ	dd	Z
edd
            ZdS )TestScipyFilePathra  rG   r   c              #     K   t                      5 }t          j        |d          5 }|V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r.  )r   r   re  r1  s      rT   r   zTestScipyFilePath.create_store
  s       	((<<<               	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s.   A9A=	A =	AAArI   r   c                    t          dddgddggi          }t          j        t          d          5  |                     |          5  	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr*  rs   rt   rI  r  rB  zmust be 1-dimensionalr   )r   r   r   r   r   r  s     rT   test_array_attrsz"TestScipyFilePath.test_array_attrs
  s   EQFQF#34555]:-EFFF 	 	##                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   A0
AA0A	A0A	 A00A47A4c                    t          d          5 }t          d          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nzexample_1.nc.gzr  )rU   r)   r   s      rT   "test_roundtrip_example_1_netcdf_gzz4TestScipyFilePath.test_roundtrip_example_1_netcdf_gz
  s    !"344 	3%n55 3 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s1   A=AA	AA	AAAc                    t          dd          5 }|j                                        D ]}|j        j        sJ 	 d d d            d S # 1 swxY w Y   d S )Nbears.ncra  r  )rU   r   r%  rb   isnative)r   r   r  s      rT   test_netcdf3_endiannessz)TestScipyFilePath.test_netcdf3_endianness
  s    !*W=== 	*)0022 * *y)))))*	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   +AAAc                h   t          d          5 }t          j        |dd          5 }|                    d           d d d            n# 1 swxY w Y   t	          j        t          d          5  t          |d	
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NTr   r   NETCDF4r   r*  zpip install netcdf4r   ra  r  )r   r  r   r  r   r   r  r   )r   r9  r  s      rT   test_nc4_scipyz TestScipyFilePath.test_nc4_scipy
  sq   4888 	7HXs9=== +##E***+ + + + + + + + + + + + + + + y0FGGG 7 7Xg66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7sW   B'AB'A	B'A	B'1BB'B	B'B	B''B+.B+Nr   )r   r   r   r   r   r  r  r   ry  r{  r  r5   r  r   rV   rT   rv  rv  
  s         $F$$$$  
   3 3 3 3
* * * * 7 7 7 7 7 7rV   rv  c                  T    e Zd ZU dZded<   dZded<   ej        d             Zdd
Z	dS )TestNetCDF3ViaNetCDF4DatarV  rG   r   r   rH   r   c              #     K   t                      5 }t          j                            |dd          5 }|V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r/  r1  s      rT   r   z&TestNetCDF3ViaNetCDF4Data.create_store
         	(*//s+< 0                 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	3   #AAAA			AA		AA!$A!rI   r   c                &   t          dg di          }t          ddt          ii          }t          j        t
          d          5  |                     ||          5  	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nri   rx  rb   rf  zencoding dtype=str for vlenr   ru  )r   r  r
  r   r   r   r   )r   rf  rS   s      rT   r  z9TestNetCDF3ViaNetCDF4Data.test_encoding_kwarg_vlen_string
  s   C!6!6!6788gs^4555]:-KLLL 	 	f==                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   B A."B.A2	2B5A2	6BB
B
Nr   )
r   r   r   r   r   r   r  r  r   r  r   rV   rT   r  r  
  si         &F&&&&!2K2222       rV   r  c                  L    e Zd ZU dZded<   dZded<   ej        d             ZdS )	 TestNetCDF4ClassicViaNetCDF4DatarV  rG   r   NETCDF4_CLASSICrH   r   c              #     K   t                      5 }t          j                            |dd          5 }|V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r  r  r/  r1  s      rT   r   z-TestNetCDF4ClassicViaNetCDF4Data.create_store  r  r  N)	r   r   r   r   r   r   r  r  r   r   rV   rT   r  r     sU         &F&&&&!2K2222    rV   r  c                  N    e Zd ZU dZded<   ddZedd            ZddZdd	Z	d
S )TestGenericNetCDFDatar   rH   r   rI   r   c                    d S r   r   r   s    rT   r  z&TestGenericNetCDFData.test_write_store  rd  rV   c                   t                      }t          j        t          d          5  |                    dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t                      5 }|                    |           t          j        t          d          5  t          |d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                                }t          j        t          d          5  t          t          |          d           d d d            d S # 1 swxY w Y   d S )Nzunrecognized enginer   foo.ncr   r  zinvalid enginerV  )rA   r   r   r   r   r   r   r   )r   rK   r9  netcdf_bytess       rT   test_enginez!TestGenericNetCDFData.test_engine  s   !!]:-CDDD 	6 	6NN8HN555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6]:->??? 	- 	-NN)N,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-  	8(NN8$$$z1GHHH 8 8Xh77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8
 ~~'']:-CDDD 	A 	A..x@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	Ask   AAA4BBB01D!C?3D?D	DD	DDDE<<F F c           
        t                      t                      }t          r|                    d           t          r|                    d           |D ]}| j        D ]}t                      5 }                    |||           |D ]?}t          ||          5 fdj	        D              d d d            n# 1 swxY w Y   @	 d d d            n# 1 swxY w Y   d S )NrV  ra  )r   r   r  c                \    g | ](}t          |         j        |         j                  )S r   )r&   rA  )rY   r  r   rK   s     rT   rZ   zNTestGenericNetCDFData.test_cross_engine_read_write_netcdf3.<locals>.<listcomp>;  sA       $% !0Q0@&)BT U U  rV   )
rA   r'  r,   addr-   r   r   r   r   r   )r   valid_engineswrite_enginer   r9  read_enginer   rK   s         @@rT   $test_cross_engine_read_write_netcdf3z:TestGenericNetCDFData.test_cross_engine_read_write_netcdf3)  s   !!-0UU 	)i((( 	'g&&&) 	 	L.  $&& (NN8F<NPPP'4 	 	)(;GGG 6
    )-                 	              	 	s6   2.C C5CCCC	CC!Cc                   t          ddt          j        d          fi          }|                     |t	          dg                    5 }|j        d         t          d          k    sJ t          ||           d d d            n# 1 swxY w Y   |                     |t	          d                    5 }|j        d         t          d          k    sJ t          ||           d d d            n# 1 swxY w Y   ddgi|_        |                     |          5 }|j        d         t          d          k    sJ t          ||           d d d            n# 1 swxY w Y   ddi|_        |                     |          5 }|j        d         t          d          k    sJ t          ||           d d d            d S # 1 swxY w Y   d S r#  r&  rZ  s      rT   r(  z2TestGenericNetCDFData.test_encoding_unlimited_dims@  s   cC41233^^BD,F,F,F^GG 	%6?#34C@@@@V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
 ^^BD,D,D,D^EE 	%?#34C@@@@V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% (#/^^B 	%6?#34C@@@@V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%
 (-^^B 	%6?#34C@@@@V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%sH   1B		BB91C66C:=C: 1EE!$E!1GGGNr   )
r   r   r   r   r   r  r9   r  r  r(  r   rV   rT   r  r    s          "1K0000    A A A ^A    .% % % % % %rV   r  z#ignore:use make_scale(name) insteadc                     e Zd ZU dZded<   ej        d             ZddZe	j
                            dd	d
g          dd            Ze	j
                            d          dd            ZddZddZddZddZddZddZd	S )TestH5NetCDFDatah5netcdfrG   r   c              #     K   t                      5 }t          j                            |d          V  d d d            d S # 1 swxY w Y   d S rc  )r   r   H5NetCDFStorer   )r   r9  s     rT   r   zTestH5NetCDFData.create_store]  s       	=((--h<<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   #AAArI   r   c           	        t          ddt          j        d          dt          j        d          z  z   fi          }ddi}|                     ||          5 }t	          ||           d d d            d S # 1 swxY w Y   d S )Nri   rH  r<                ?invalid_netcdfTru  )r   rk   r  r   r(   r   r   r   r   s       rT   test_complexzTestH5NetCDFData.test_complexb  s    C#rwqzzBO'C!DEFF'.^^H+^>> 	+&6***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   A77A;>A;r  NFc           	     v   dd l }t          ddt          j        d          dt          j        d          z  z   fi          }d|i}t	          j        |j        d          5  |                     ||	          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr   ri   rH  r<  r  r  z"are not a supported NetCDF featurer   ru  )	r  r   rk   r  r   r   CompatibilityErrorr   r(   )r   r  r  r   r   r   s         rT   test_complex_errorz#TestH5NetCDFData.test_complex_errorh  sC   C#rwqzzBO'C!DEFF'8]'/S
 
 
 	/ 	/ kBB /fXv.../ / / / / / / / / / / / / / /	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s6   !B.9B
B.B	B.B	B..B25B2z.ignore:You are writing invalid netcdf featuresc           	        t          ddt          j        d          dt          j        d          ifi          }ddi}|                     ||          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nri   rH  r<  
numpy_boolTr  ru  )r   rk   r  bool_r   r)   r  s       rT   test_numpy_bool_z!TestH5NetCDFData.test_numpy_bool_t  s     C#rwqzzL"(4..3Q!RSTT'.^^H+^>> 	/&Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/r  c           	     f   t                                          d          }d|j        d<   ddg}|D ]~}t                      5 }|                    ||           |D ];}t          ||          5 }t          ||           d d d            n# 1 swxY w Y   <	 d d d            n# 1 swxY w Y   d S )Nr  rh  r*  rV  r  r  )rA   rP  r  r   r   r   r)   )r   rK   r  r  r9  r  r   s          rT   $test_cross_engine_read_write_netcdf4z5TestH5NetCDFData.test_cross_engine_read_write_netcdf4}  sK     !!++F33!
5/8*.E) 	7 	7L "" 7hx===#0 7 7K%h{CCC 7v(v6667 7 7 7 7 7 7 7 7 7 7 7 7 7 777 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7s6   -B%/B	 B%BB%BB%%B)	,B)	c                N   t                      5 }t          j        |d          5 }d|_        d d d            n# 1 swxY w Y   t	          |          5 }t          ddi          }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rw  r*  rh  rB  )r   r  r   r*  r   r)   )r   r9  r  r   r   s        rT   test_read_byte_attrs_as_unicodez0TestH5NetCDFData.test_read_byte_attrs_as_unicode  s^    	3(Xs++  r                             h'' 36"%888 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sR   B9B=	B =	B#B6BB	B	B	
BB!Bc                   t          ddt          j        d          fi          }|                     |t	          dg                    5 }|j        d         t          d          k    sJ t          ||           d d d            n# 1 swxY w Y   ddgi|_        |                     |          5 }|j        d         t          d          k    sJ t          ||           d d d            d S # 1 swxY w Y   d S r#  r&  rZ  s      rT   r(  z-TestH5NetCDFData.test_encoding_unlimited_dims  r)  r*  c                X   ddddddfdd ddd dfdd ddddd dff}|D ]\  }}t                      }ddd|j        j        d	}|d
         j                            |           |d
         j                            |           |                    |           dt          j        dg          f|d<   |d         d         |d<   |                     |          5 }|                                D ]\  }}||d
         j        |         k    sJ 	 d d d            n# 1 swxY w Y   d S )Ngzipr  compressioncompression_optsT)r  r  lzf)r  r  r  r  r  )r  r  r  r  r  
scalar_dimrO  scalarr   )	rA   r  r  ro   r5  rk   rl   r   r  )	r   	ENCODINGScompr_in	compr_outrK   compr_commonr   r  r  s	            rT   test_compression_encoding_h5pyz/TestH5NetCDFData.test_compression_encoding_h5py  s   
 !'A>>A.. !&4@@ %4@@ $)(, !"	  !&4@@H
	2 $- 	; 	;Hi#%%D$""&)/	 L L!((222L!((666\****BHcUOO<DN!(^A.DN%% ;%OO-- ; ;DAqv 7 ::::::;; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	;s   4DD!	$D!	c                f   t          ddt          j        d          fi          }t                      5 }|                    |dddddddi	           t          |d
          5 }|j        j        d         du sJ |j        j        d         dk    sJ 	 ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t                      5 }t          j	        t          d          5  |                    |dddddi	           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t                      5 }t          j	        t          d          5  |                    |ddddddi	           ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )zWhen mismatched h5py and NetCDF4-Python encodings are expressed
        in to_netcdf(encoding=...), must raise ValueError
        ri   rH  r   r  r  Tr=  )r  r  r  r  )r   ro   r  r  r  Nz+'zlib' and 'compression' encodings mismatchr   r  )r  r  z5'complevel' and 'compression_opts' encodings mismatchr<  )r  r  r  )r   rk   r  r   r   r   ri   ro   r   r   r   r  s       rT   $test_compression_check_encoding_h5pyz5TestH5NetCDFData.test_compression_check_encoding_h5py  s    c29T??3455 	;(NN!'- $,-%&	      hz::: ;fx(0D8888x(5:::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;$  	("P     %!5$#G#GH                  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	(N     %+101)*   
 
 
	              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   1B8%/B!B8!B%	%B8(B%	)B88B<?B<D.-DD.D	D.D	D..D25D2F&#FF&F	F&F	F&&F*-F*c                   t          ddt          j        d          fi          }dddddii}|                     ||          5 }|j        j        d	         sJ |j        j        d
         dk    sJ 	 d d d            n# 1 swxY w Y   dddd dii}|                     ||          5 }|j        j        d         dk    sJ |j        j        d         J 	 d d d            d S # 1 swxY w Y   d S )Nri   rH  r   ro   r  r  r  ru  r  r  r  r  r  )r   rk   r  r   ri   ro   r~  s       rT   test_dump_encodings_h5pyz)TestH5NetCDFData.test_dump_encodings_h5py  s   cC41233sFPQ$R$RST^^BF^33 	7v8$V,,,,8$[1Q66666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 sEt$T$TUV^^BF^33 	Av8$]3u<<<<8$%78@@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As$   -B  BB+-C&&C*-C*r   )r   r   r   r   r   r  r  r   r  r   r   r  r  r  r  r  r  r(  r  r  r  r   rV   rT   r  r  W  sE         (F''''= = =+ + + + [-e}==	/ 	/ 	/ >=	/ [ PQQ/ / / RQ/7 7 7 73 3 3 3% % % %); ); ); );V1 1 1 1fA A A A A ArV   r  c                      e Zd ZddZddZdS )TestH5NetCDFAlreadyOpenrI   r   c                   dd l }t                      5 }t          j        |d          5 }|                    d          }|                    dd          }d|d<   d d d            n# 1 swxY w Y   d	d
i} |j        |fddi|}t          j        |d                   }t          |          5 }	t          ddi          }
t          |
|	           d d d            n# 1 swxY w Y    |j        |fddi|}t          j        |d          }t          |          5 }	t          ddi          }
t          |
|	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r  rV  ri   r  r+  .decode_vlen_stringsTr   r  rR  r  )r  r   r  r   r  r  Filer   r  r   r)   )r   r  r9  r  r  r  rS   rX  r  r   r   s              rT   test_open_dataset_groupz/TestH5NetCDFAlreadyOpen.test_open_dataset_group  s    	/(XC000 Bs++((e44#              
 ,T2Fx<<c<V<<B*2c733Ee$$ /"C?33 2.../ / / / / / / / / / / / / / / x<<c<V<<B*2S999Ee$$ /"C?33 2.../ / / / / / / / / / / / / / /!	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s}   E#1A'E#'A+	+E#.A+	/A E#/"CE#C!	!E#$C!	%8E#"E?E#E	E#E	E##E'*E'c           	        dd l }t                      5 }t          j        |d          5 }|                    dd           |                    dt          j        d          }t          j        d          |d d <   d d d            n# 1 swxY w Y   dd	i} |j	        |fd
di|}t          j        |          }t          |          5 }|                    d	          }	t          ddt          j        d          fi          }
t          |
|	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   r  ri   r^   rH  r  r  Tr   r  r`  )r  r   r  r   r  r  rk   r  r  r  r   r  r   rd  r)   )r   r  r9  r  r  rS   rX  r  r   rY  r   s              rT   rZ  z%TestH5NetCDFAlreadyOpen.test_deepcopy$  s    	3(XC000 %B""3+++%%c28V<<y}}!!!% % % % % % % % % % % % % % %
 ,T2Fx<<c<V<<B*2..Ee$$ 3d++"C#ry}})=#>?? 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sZ   D9AB;D9B	D9B	:D9	AD!D9!D%	%D9(D%	)D99D= D=Nr   )r   r   r   r  rZ  r   rV   rT   r  r  
  s<        / / / /.3 3 3 3 3 3rV   r  c                  F    e Zd ZU dZded<   d
dZd
dZed
d            Zd	S )TestH5NetCDFFileObjectr  rG   r   rI   r   c                   t          j        t          d          5  t          dd          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          d          5  t          d          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          d          5  t          dd	          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          d
          5  t          t	          d          d          5  	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NzHDF5 as bytesr   s   HDF

r  r  z/match in any of xarray's currently installed IOs   garbagezcan only read bytesrV  z)not the signature of a valid netCDF4 file)r   r   r   r   r   r   s    rT   test_open_badbytesz)TestH5NetCDFFileObject.test_open_badbytes;  s   ]:-=>>> 	 	2:FFF                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]P
 
 
 	 	 j))                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ]:-CDDD 	 	j;;;                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]J
 
 
 	 	 gj11*EEE                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A<AA 	 AA 	AAA9B.	BB.B	B.B	B..B25B2D&C4(D4C8	8D;C8	<DDD1E6EE6E"	"E6%E"	&E66E:=E:c           	        t                      }d|j        d<   t                      5 }|                    |d           t	          |d          5 }t          |d          5  t          |d          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrh  r*  r  r  rr  )rA   r  r   r   r   r   )r   r   r9  rg  s       rT   test_open_twicez&TestH5NetCDFFileObject.test_open_twiceM  s   #%% %u 	(x
;;;h%% !!J777  %a
;;;                                            	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s}   (CB/!B3B	5BBBB	BB/BB/B B/#C/B3	3C6B3	7CCCc           	        t                                          d          }d|j        d<   t                      5 }|                    |d           t          |d          5 }t          |d          5 }t          ||           d d d            n# 1 swxY w Y   |                    d           t          |          5 }t          ||           d d d            n# 1 swxY w Y   |                    d           t          |
                                          5 }t          |d          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    d           t          j        t          d	          5  t          |d
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |d          5 }|                    d           t          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  rh  r*  r  r  rr  r   znot a valid NetCDF 3r   ra  r  )rA   rP  r  r   r   r   r   r)   seekr   readr   r   r  )r   r   r9  rg  r   bios         rT   test_open_fileobjz(TestH5NetCDFFileObject.test_open_fileobjW  s     $%%//77 %u 	 (x
;;;h%% 4!!J777 76$Xv6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 q			!!__ 7$Xv6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 q			QVVXX&& ;#%c*=== ;(6:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; q			]94JKKK 4 4 733334 4 4 4 4 4 4 4 4 4 4 4 4 4 44 4 4 4 4 4 4 4 4 4 4 4 4 4 4( h%%  q			Q                             /	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s  (H8"G4BGBGB'G CGC!!G$C!%9GE$0E	E$EE$EE$G$E((G+E(,3GF=1G=GGGGH8G	H8G	H8/%H H8 H$	$H8'H$	(H88H<?H<Nr   )	r   r   r   r   r   r  r  r9   r  r   rV   rT   r  r  7  so         'F''''   $          ^     rV   r  c                  B    e Zd Zej        	 dd            Zd	dZd	dZdS )
TestH5NetCDFViaDaskDataNFc              #     K   |i }|i }|                     dd           t                              | ||||          5 }|V  d d d            d S # 1 swxY w Y   d S r^  )r_  r  r   r`  s         rT   r   z!TestH5NetCDFViaDaskData.roundtrip|  s       KKx,,,''$[2G
 
 	HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	ra  rI   r   c                    d S r   r   r   s    rT   rE  z,TestH5NetCDFViaDaskData.test_dataset_caching  rd  rV   c                   t          j        ddd          }t          |dd          }d|j        d<   d|j        d	<   t          j        ddd
          }t          |dd          }d
|j        d<   d|j        d	<   t          ||d          }|                     |          5 }|d         j        d         dk    sJ |d         j        d         d
k    sJ 	 d d d            d S # 1 swxY w Y   d S rf  rh  rj  s        rT   rk  z6TestH5NetCDFViaDaskData.test_write_inconsistent_chunks  rl  rm  r  r   )r   r   r   r  r  r   rE  rk  r   rV   rT   r  r  x  si         NS      C C C C C CrV   r  )ra  rV  r  pynior|  )paramsc                    | j         S r   r  requests    rT   
readenginer    
    =rV   rs   rT  c                    | j         S r   r  r  s    rT   r  r    r  rV   r<  c              #     K   | j         }|/t          |          5  |V  d d d            d S # 1 swxY w Y   d S |V  d S )N)file_cache_maxsize)r  r#   )r  maxsizes     rT   r  r    s      mGG444 	 	MMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   .22c                    | j         S r   r  r  s    rT   parallelr    r  rV   c                    | j         S r   r  r  s    rT   r  r    r  rV   )tmp_pathZipStoreDictc                    | j         dk    r|S | j         dk    rddlm} |dz  } ||          S | j         dk    rt                      S t	          d          )Nr  r  r   )r  z	store.zipr  znot supported)r  zarr.storager  r  r   )r  r  r  rM   s       rT   	tmp_storer    so    }
""	*	$	$))))))+%x~~	&	 	 vv)))rV   c                    | dk    rt          j        d           d S | dk    rt          j        d           d S t          j        |            d S )NrV  netCDF4r  Nio)r   r]  r  s    rT   skip_if_not_enginer    s]    I&&&&&	7		E"""""F#####rV   c           
        t          |            t          rt          j        d           t          j                            |          }t          dd|fi          }t          |          5 }| dk    r| nd}|j	        j
        D ]i}	|                    t          |	|	dz                       }
|dk    r|
                    ||	         |	           M|
                    ||	         
           jt          |dd| ||s| dk    r|nd          5 }t!          |d         j        t$                    sJ t'          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NzSkipping on Windowsr*  ri   r  rV  rs   r  r|  r  )r  nestedr  )combine
concat_dimr   r  r  )r  r.  r   rL  rk   r  r  r   r  ri   r%  r  r  r   rz  r   r	  rK   r  r)   )r  r  r  r  r  randdatarf  tmpfileswriteengineiisubdsr   s               rT   test_open_mfdataset_manyfilesr    s    z""" +)***yv&&HX/00H	&	!	! /X$.'$9$9jjy*# 	2 	2BMME"b1f$5$5M66Ef$$[AAAAHRL1111 "(NZ6-A-A66
 
 
 	/ fUm0/BBBBBXv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	// / / / / / / / / / / / / / / / / /s7   ,B E#3E?E#E	E#E	E##E'*E'c                 &   t           j                            t           j                            t                    dd          } t          t          |                     5 }t          |t                    sJ 	 d d d            d S # 1 swxY w Y   d S )NrK   r  )	rL   rM   rN   rO   rP   r   r   r	  r   )r   r   s     rT   )test_open_mfdataset_can_open_path_objectsr    s     gll27??844fnMMG	W	&	& +&&'******+ + + + + + + + + + + + + + + + + +s    BB
B
c            	        ddl m}  t          d          5 }t          d          D ]} | ||         d          5 }|                    dd           |                    dt          j        d          }d| d	| g|_        t          j	        d          |d
d
<   d
d
d
           n# 1 swxY w Y   t          |d                   5 }t          |d                   5 }t          j        ||gd          }t          j        |d         |d         gdd          5 }t          ||           d
d
d
           n# 1 swxY w Y   d
d
d
           n# 1 swxY w Y   d
d
d
           n# 1 swxY w Y   d
d
d
           d
S # 1 swxY w Y   d
S )zO
    Case when an attribute of type list differs across the multiple files
    r   r   rt   r   ri   rI  test_varz	string a z	string b Nrs   r  r  r  r  )r  r   r  r  r  r  rk   r  	test_attrr  r   r  r  r   r)   )	r   r  r   rg  vlvarr  r=  rf  r   s	            rT   test_open_mfdataset_list_attrr    s     	!		 7q 	( 	(AC(( (A!!#q)))((RXEE#2q??OOO"D9Q<<aaa( ( ( ( ( ( ( ( ( ( ( ( ( ( ( &)$$ 	7fQi(( 7C9c3ZS999&AYq	*H   7$VX6667 7 7 7 7 7 7 7 7 7 7 7 7 7 77 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   $E>A B&E>&B**E>-B*.E>E&>ED8	,E8D<<E?D< EE&EE&EE&E>&E*	*E>-E*	.E>>FFc                  6   e Zd ZdZdZej        d)d            Zd Ze	j
                            dddg          e	j
                            d	g d
          e	j
                            dg d          d*d                                    Ze	j
                            g d e	j        dddiddigi dd           e	j        dddiddigddidd           e	j        dddiddigddd           e	j        dddddddgddd           e	j        ddddd dd!gddddd          f          d"             Zd*d#Zd*d$Ze	j
                            dddg          e	j
                            d	g d
          d*d%                        Zd*d&Zd*d'Zd*d(ZdS )+(TestOpenMFDatasetWithDataVarsAndCoordsKwrO  v1r   c              #  T  K   |                                  \  }}|j        |z   |d<   t                      5 }t                      5 }|                    |           |                    |           ||g||gfV  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nri   )'gen_datasets_with_common_coord_and_timeri   r   r   )r   fuzzr  r=  tmpfile1tmpfile2s         rT   setup_files_and_datasetszATestOpenMFDatasetWithDataVarsAndCoordsKw.setup_files_and_datasets&  s5     ??AAS 54<C 	7( "" 7hh'''h'''*S#J66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s5   B5B9BB			BB		BB!$B!c                   d}d}t          j        |          }t          j        |          }t          j        |d|z  d          }t           j                            ||          }t           j                            ||          }t	          | j        ddg|f| j        dd|z  fidg|fdg|fd          }t	          | j        ddg|f| j        dd|z  fidg|fdg|fd          }	||	fS )Nr^   rt   rs   rj   ri   )rj   ri   )r  r  )rk   r  r  r  r   var_name
coord_name)
r   r  r  ri   t1t2r  v2r  r=  s
             rT   r
  zPTestOpenMFDatasetWithDataVarsAndCoordsKw.gen_datasets_with_common_coord_and_time5  s   IbMMYr]]Yr1r61%%Y__R$$Y__R$$}Sz2&6#qSTuV%SE1:66
 
 

 }Sz2&6#qSTuV%SE1:66
 
 

 CxrV   zcombine, concat_dim)r  rj   )	by_coordsNopt)r  minimal	differentrN   )outerinnerleftrightrI   r   c                L   |                                  5 \  }\  }}|dk    r|                                 t          |||||          5 }t          j        ||g|d|          }	t          ||	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  r  r  rN   rj   )r  r  rN   )r  reverser   r  r  r)   )
r   r  r  r  rN   r  r  r=  r   	ds_expects
             rT   'test_open_mfdataset_does_same_as_concatzPTestOpenMFDatasetWithDataVarsAndCoordsKw.test_open_mfdataset_does_same_as_concatL  s8    **,, 	00C
c+%%g*SW   0IsCjCStTTT	 Y///	0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s5   5B
+B5BB	BB		BB B)combine_attrsr  r   expect_errorr,  r   rs   rt   F)idoverrideno_conflictsNT	identicalr  rI  )r   rX  drop_conflictsrc   )rW  rX  c                b   |                                  5 \  }\  }}t          |          D ]\\  }}	t          |	                                          }
||         |
_        |
                                 |
                    |	           ]|rOt          j        t          j
                  5  t          j        |dd|           d d d            n# 1 swxY w Y   n>t          j        |dd|          5 }
|
j        |k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  rj   )r  r  r"  )r  r   r   r!  r  r  r   r   r   r  
MergeErrorr   )r   r"  r  r   r#  r  r  r=  r   rg  r   s              rT   )test_open_mfdataset_dataset_combine_attrszRTestOpenMFDatasetWithDataVarsAndCoordsKw.test_open_mfdataset_dataset_combine_attrs]  s   : **,, 	00C
c!%((    1!!__))++ 8


Q 0]2=11  % (#&&3	                  &$""/	   0
 8x/////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0#	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0sZ   BD$(CD$C	D$C	D$1D D$D	D$D	D$$D(+D(c                   |                                  5 \  }\  }}t          |          D ]\\  }}t          |                                          }d|z   |j        d<   |                                 |                    |           ]t          j        |dd          5 }|j	        dk    sJ 	 ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )zJ
        Case when an attribute differs across the multiple files
        r^   test_dataset_attrr  rj   r  N)
r  r   r   r!  r  r  r   r  r   r-  r   r  r  r=  r   rg  r   s          rT   *test_open_mfdataset_dataset_attr_by_coordszSTestOpenMFDatasetWithDataVarsAndCoordsKw.test_open_mfdataset_dataset_attr_by_coords  sb    **,, 		20C
c!%((    1!!__))++02Q,-


Q"5(sKKK 2r+r111112 2 2 2 2 2 2 2 2 2 2 2 2 2 2		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2 		2s6   B
CB:.C:B>	>CB>	CCCc                   |                                  5 \  }\  }}t          |          D ]_\  }}t          |                                          }||d         j        d<   |                                 |                    |           `t          j        |dd          5 }|d         j	        dk    sJ 	 ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z`
        Case when an attribute of a member DataArray differs across the multiple files
        r  test_dataarray_attrr  rj   r  r   N)
r  r   r   r!  r  r  r   r  r   r1  r.  s          rT   ,test_open_mfdataset_dataarray_attr_by_coordszUTestOpenMFDatasetWithDataVarsAndCoordsKw.test_open_mfdataset_dataarray_attr_by_coords  sf    **,, 		90C
c!%((    1!!__))++89445


Q"5(sKKK 9r$x3q888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9		9 		9 		9 		9 		9 		9 		9 		9 		9 		9 		9 		9 		9 		9 		9 		9 		9 		9s6   BC"C7CC	C
C	CC"Cc           	     2   |                      d          5 \  }\  }}|dk    r|                                 t          j        t          d          5  t          ||||d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrd   )r  r  z#cannot align objects.*join.*exact.*r   exactr  )r  r  r   r   r   r   )r   r  r  r  r  r  r=  s          rT   +test_open_mfdataset_exact_join_raises_errorzTTestOpenMFDatasetWithDataVarsAndCoordsKw.test_open_mfdataset_exact_join_raises_error  s7    ***44 	8K
c+%%"H   	 	 !#)    	 	 	 	 	 	 	 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   <BA4(B4A8	8B;A8	<BBBc                   d}|                                  5 \  }\  }}t          ||dd          5 }|| j                 j        }|| j                 j        }|| j                 j        }|| j                 j        }	|	|k    sJ ||k    sJ ||k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  rj   r  r  r  r  r   r  r  r  
r   r  r  r  r=  r   coord_shapecoord_shape1coord_shape2	var_shapes
             rT   #test_common_coord_when_datavars_allzLTestOpenMFDatasetWithDataVarsAndCoordsKw.test_common_coord_when_datavars_all  sf   **,, 	30C
ch3   3 17"4?39"4?39t}-3	 K////#{2222#{222223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	35   B7A!BB7B#	#B7&B#	'B77B;>B;c                   d}|                                  5 \  }\  }}t          ||dd          5 }|| j                 j        }|| j                 j        }|| j                 j        }|| j                 j        }	|	|k    sJ ||k    sJ ||k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  rj   r7  r8  r9  s
             rT   'test_common_coord_when_datavars_minimalzPTestOpenMFDatasetWithDataVarsAndCoordsKw.test_common_coord_when_datavars_minimal  sf   **,, 	30C
ch3   3 17"4?39"4?39t}-3	 K////#{2222#{222223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3r?  c                   |                                  5 \  }}t          j        t                    5  t	          |dd          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t                    5  t	          |dd          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nminimumr  )r  r  )r  r  )r  r   r   r   r   )r   r  r  s      rT   (test_invalid_data_vars_value_should_failzQTestOpenMFDatasetWithDataVarsAndCoordsKw.test_invalid_data_vars_value_should_fail  s   **,, 	
z**  #EYTTT                              
 z**  #E)[QQQ                              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   CA*AA*AA*AA*C*A.	.C1A.	2CC!B/#C/B33C6B37C:CC
	
CC
	CC"%C")r   r   )r   r   r   r  r  r  r  r  r
  r   r   r  r!  r  r+  r/  r2  r5  r>  rA  rD  r   rV   rT   r  r     s        JH7 7 7 7  . [1DE  [U$C$C$CDD[V%H%H%HII
0 
0 
0 JI ED 

0 [>>>FL3(S!H!5r5VLLLFLc1XQx03(Ej   FL#qC8 4dD^   FLq!!#3#34   FL q!!!#4#45a  #  	
 40 05 4082 2 2 29 9 9 9 [1DE  [U$C$C$CDD   ED "3 3 3 3$3 3 3 3$	 	 	 	 	 	rV   r  c                  4   e Zd Zej        d             Zej        	 d/d            Zd0dZd0dZd0d	Z	d0d
Z
d0dZd0dZd0dZed0d            Zd0dZd0dZd0dZd0dZd0dZd0dZd0dZd0dZd0dZej                            d          d0d            Zd0dZd0dZd0dZd0dZ d0dZ!d0d Z"d0d!Z#d0d"Z$d0d#Z%d0d$Z&d0d%Z'd0d&Z(d0d'Z)d0d(Z*d0d)Z+ej        j        d0d*            Z,d0d+Z-d0d,Z.ej        /                    e0d-          d0d.            Z1dS )1TestDaskc              #  *   K   t                      V  d S r   r   r   s    rT   r   zTestDask.create_store  s      iirV   NFc              #  6   K   |                                 V  d S r   )r  )r   rK   r   r   r   s        rT   r   zTestDask.roundtrip  s"       jjllrV   rI   r   c                    d S r   r   r   s    rT   rn  z1TestDask.test_roundtrip_string_encoded_characters      rV   c                    d S r   r   r   s    rT   r  z.TestDask.test_roundtrip_coordinates_with_space  rJ  rV   c                    t          j        g d          }t          d|f|d         d          }|                     |          5 }t	          ||           d d d            d S # 1 swxY w Y   d S )Nrp  rj   r   rs  )rv  rw  r   r   r)   )r   rx  r   r   s       rT   ry  z+TestDask.test_roundtrip_numpy_datetime_data  s     BBBCC#uU1X>>??^^H%% 	/Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/r  c                   ddl m}  |            }|                                D ]+} |ddd           |ddd          g}t          d|f|d         d          }t	          j        |          }t	          j         |ddd          g          }|                     |          5 }t          |j        j        |z
            }	|	t	          j	        dd          k    
                                sJ t          |j        j        |z
            }	|	t	          j	        dd          k    
                                sJ 	 d d d            n# 1 swxY w Y   -d S )Nr   r{  rs   rt   rj   rs  r  )r  r|  r%  r   rk   rl   r   r  rj   r  r  rt  )
r   r|  r  r  rx  r   r  r  r   r  s
             rT   r  z,TestDask.test_roundtrip_cftime_datetime_data  s    	JIIIII++--
#**,, 	B 	BIYq!Q''1a););<Ec5\qBBCCH!#%"$(IIaA,>,>+?"@"@)) BVvx1CCDD BN1c$:$::??AAAAAvy/2EEFF BN1c$:$::??AAAAAAB B B B B B B B B B B B B B B	B 	Bs   %BEE		E		c                    d S r   r   r   s    rT   r  zTestDask.test_write_store&  rd  rV   c                    t          ddg dfi          }|                     |          5 }|j        j        j        rJ |j        j         |j        j        j        rJ 	 d d d            d S # 1 swxY w Y   d S )Nr*  ri   r;  )r   r   r*  rA  r  r%  r   s      rT   rE  zTestDask.test_dataset_caching*  s    EC#3455^^H%% 	6z*5555Jz*55555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   3A,,A03A0c           	        t          ddt          j                            d          fi          }t	                      5 }t	                      5 }|                    t          d                                        |           |                    t          dd                                        |           t          ||gdd          5 }t          |j
        j        j        t          j                  sJ |j
        j        j        j        dk    sJ t!          ||           d d d            n# 1 swxY w Y   t          ||gdddd	i
          5 }|j
        j        j        j        dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t#          j        t&          d          5  t          d           d d d            n# 1 swxY w Y   t#          j        t(          d          5  t          d           d d d            d S # 1 swxY w Y   d S )Nr*  ri   r^   r<  r  r  r  r  r  rI  )r  r  r  )rI  rt   rI  rt   zno files to openr   zfoo-bar-baz-*.ncz	wild-cardhttp://some/remote/uri)r   rk   r  r  r   r  r  r   r   r	  r*  rA  rK   r`  Arrayr  r)   r   r   r  r   r   rf  tmp1tmp2r   s        rT   test_open_mfdatasetzTestDask.test_open_mfdataset1  s   EC)<)<#=>?? 	N$ "" Nda))33D999a--77===#4LS(   7%fj&9&>IIIII!:.3:iGGGG$Xv6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 $4LS(CQR8   N!:.3:oMMMMMN N N N N N N N N N N N N N NN N N N N N N N N N N N N N N	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N ]7*=>>> 	/ 	/-...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/]:\::: 	5 	53444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   F.BFAD4(F4D88F;D8<FF 4F FFFFF.F	F.F	F..F25F2G00G47G4H33H7:H7c                    t          j        d           t          j        t          d          5  t	          dd           d d d            d S # 1 swxY w Y   d S )NrX  zno filesr   rT  r|  r  )r   r]  r   r  r   r   s    rT   test_open_mfdataset_no_filesz%TestDask.test_open_mfdataset_no_filesG  s    M*** ]7+666 	D 	D3FCCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   AAAc                ~   t          dddgt          j                            dd          fi          }t	                      5 }t	                      5 }t	                      5 }t	                      5 }|                    t          d          t          d                                        |           |                    t          dd          t          d                                        |           |                    t          d          t          dd                                        |           |                    t          dd          t          dd                                        |           t          ||g||ggd	ddg
          5 }t          |j
        j        j        t          j                  sJ |j
        j        j        j        dk    sJ t!          ||           d d d            n# 1 swxY w Y   t          ||g||ggd	ddgddd          5 }|j
        j        j        j        dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr*  ri   rH  r^   r  r<  r  rG  r  r  )r  )r  r  rI  rt   )r  r  r  )rS  )rt   rt   rt   rt   )r   rk   r  r  r   r  r  r   r   r	  r*  rA  rK   r`  rU  r  r)   )r   rf  rW  rX  tmp3tmp4r   s          rT   test_open_mfdataset_2dzTestDask.test_open_mfdataset_2dO  s   ES#J	A0F0F#GHII 	$ "" d$&& $(** d aE!HH==GGMMM aaAAKKDQQQ aE!QKK@@JJ4PPP aaDDNNtTTT+"D\D$<8$,(+Sz   ? $#-fj.A.F#Q#QQQQ#):#6#;#BFV#V#V#V#V,Xv>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ,"D\D$<8$,(+Sz)*#3#3	   	
 $#):#6#;#B G $ $ $ $ $	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                                          	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   J2J J/D/I,	AH6I,	HI,		H
!I,	+I	I,	II,	II,	 J,I00J3I04J7JJJ
JJJ2J	J2!J	"J22J69J6c                   t          ddt          j                            d          fi          }t	                      5 }t	                      5 }t          |          }t          |          }|                    t          d                                        |           |                    t          dd                                        |           t          ||gdd          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S Nr*  ri   r^   r<  r  r  rQ  r   rk   r  r  r   r   r  r  r   r   r)   )r   rf  tmps1tmps2rW  rX  r   s          rT   test_open_mfdataset_pathlibz$TestDask.test_open_mfdataset_pathlibl  s   EC)<)<#=>?? 		7% "" 7eE{{E{{a))33D999a--77===#4LS(   7$Xv6667 7 7 7 7 7 7 7 7 7 7 7 7 7 77 7 7 7 7 7 7 7 7 7 7 7 7 7 7		7 		7 		7 		7 		7 		7 		7 		7 		7 		7 		7 		7 		7 		7 		7 		7 		7 		7sZ   D:B D".D?D"DD"DD"D:"D&	&D:)D&	*D::D>D>c                   t          dddgt          j                            dd          fi          }t	                      5 }t	                      5 }t	                      5 }t	                      5 }t          |          }t          |          }t          |          }t          |          }	|                    t          d          t          d                                        |           |                    t          dd          t          d                                        |           |                    t          d          t          dd                                        |           |                    t          dd          t          dd                                        |	           t          ||g||	ggd	ddg
          5 }
t          ||
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr*  ri   rH  r^   r  r<  r  rG  r  r  rb  )r   rf  rc  rd  tmps3tmps4rW  rX  r]  r^  r   s              rT   test_open_mfdataset_2d_pathlibz'TestDask.test_open_mfdataset_2d_pathliby  s<   ES#J	A0F0F#GHII 	?% "" ?e$&& ?%(** ?e#E{{#E{{#E{{#E{{ aE!HH==GGMMM aaAAKKDQQQ aE!QKK@@JJ4PPP aaDDNNtTTT+"D\D$<8$,(+Sz   ? $,Xv>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   IH< H%/E+H	G7+H	7G;;H	>G;?H	H%HH%HH%H<%H))H<,H)-H<0I<I 	 II 	IIIc                R   t          ddt          j                            d          fi          }t	                      5 }t	                      5 }|                    t          d                                        |           |                    t          dd                                        |           t          ||gdd          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S ra  )
r   rk   r  r  r   r  r  r   r   r)   rV  s        rT   test_open_mfdataset_2zTestDask.test_open_mfdataset_2  s   EC)<)<#=>?? 	7$ "" 7da))33D999a--77===#4LS(   7$Xv6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7sZ   DBDC-!D-C11D4C15D8DD	DD	DD #D c           	        t          ddt          j                            d          fi          }t	                      5 }t	                      5 }|                    t          d                    }|                    t          dd                    }d|j        d<   d|j        d<   |                    |           |                    |           t          ||gdd	
          5 }|j
        |j
        k    sJ t          j        t          d          5  |j         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr*  ri   r^   r<  r  test1rh  test2r  rQ  zno attributer   )r   rk   r  r  r   r  r  r  r   r   rm  r   r   AttributeErrorrn  r   rf  rW  rX  r  r=  r   s          rT   test_attrs_mfdatasetzTestDask.test_attrs_mfdataset  s]   EC)<)<#=>?? 	%$ "" %dmmeAhhm//mmeArllm33%*	'"%*	'"d###d####4LS(   % "<394444~_MMM % %% % % % % % % % % % % % % % %% % % % % % % % % % % % % % %% % % % % % % % % % % % % % %	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s~   E0BE(.ED*	E*D..E1D.2E5EEEE	EE0E	E0E	 E00E47E4c                t   t          ddt          j                            d          fi          }t	          d          5 \  }}|                    t          d                    }|                    t          dd                    }d|j        d<   d|j        d	<   |                    |           |                    |           t          ||gdd
|          5 }|j        d	         |j        d	         k    sJ d|j        vsJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S Nr*  ri   r^   rt   r<  r  rm  rh  rn  r  )r  r  
attrs_file)
r   rk   r  r  r  r  r  r  r   r   rp  s          rT   test_open_mfdataset_attrs_filez'TestDask.test_open_mfdataset_attrs_file  s   EC)<)<#=>??a   	3LT4--%((-++C--%2,,-//C!&CIg!&CIgMM$MM$th4   3|G,	'0BBBBBfl222223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s7    BD-*D	D-D	D-D	D--D14D1c                   t          ddt          j                            d          fi          }t	          d          5 \  }}t          |          }t          |          }|                    t          d                    }|                    t          dd                    }d|j        d<   d|j        d	<   |	                    |           |	                    |           t          ||gdd
|          5 }|j        d	         |j        d	         k    sJ d|j        vsJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S rs  )r   rk   r  r  r  r   r  r  r  r   r   )	r   rf  rc  rd  rW  rX  r  r=  r   s	            rT   #test_open_mfdataset_attrs_file_pathz,TestDask.test_open_mfdataset_attrs_file_path  s   EC)<)<#=>??a   	3NUE;;D;;D--%((-++C--%2,,-//C!&CIg!&CIgMM$MM$th4   3|G,	'0BBBBBfl222223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s7    B<E<*D3'E3D7	7E:D7	;EEEc                v   t          dt          j                            d          ft          j        d          d          }t                      5 }t                      5 }|                    t          d                                        |           |                    t          dd                                        |           t          ||gd          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nri   r^   r*  ri   r<  r  r  r  )r   rk   r  r  r  r   r  r  r   r   r)   rV  s        rT    test_open_mfdataset_auto_combinez)TestDask.test_open_mfdataset_auto_combine  s   C)<)<#=BIbMMRRSS 	7$ "" 7da))33D999a--77===#T4L+FFF 7&$Xv6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s[   D.!BD"C?3D?DDDD
D.D	D.D	D..D25D2c                   t          dt          j                            d          ft          j        d          d          }t                      5 }t                      5 }|                    t          d                                        |           |                    t          dd                                        |           t          j
        t          d          5  t          ||gd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nri   r^   ry  r<  r  z`concat_dim` has no effectr   )r  )r   rk   r  r  r  r   r  r  r   r   r   r   r   )r   rf  rW  rX  s       rT   -test_open_mfdataset_raise_on_bad_combine_argsz6TestDask.test_open_mfdataset_raise_on_bad_combine_args  s   C)<)<#=BIbMMRRSS 	A$ "" Ada))33D999a--77===]:5QRRR A A"D$<C@@@@A A A A A A A A A A A A A A AA A A A A A A A A A A A A A A	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As[   D9!B	D!*D
>D!
DD!DD!D9!D%	%D9(D%	)D99D= D=z#mfdataset loses encoding currently.r  c           	        t          dt          j                            d          fdt	          j        ddd          fd          }d|j        j        d<   t                      5 }t                      5 }|	                    t          d	          
          }|	                    t          d	d          
          }d|j        j        d<   d|j        j        d<   |                    |           |                    |           t          ||gd          5 }|j        j        d         |j        j        d         k    sJ |j        j        d         |j        j        d         k    sJ |j        j        d         |j        j        d         k    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrj   r^   z
2010-01-011D)startrr  freq)r*  rj   zdays since 2010-01-01r   r<  r  days since 2000-01-01r  rz  )r   rk   r  r  rv  rs  rj   ro   r   r  r  r   r   rp  s          rT   test_encoding_mfdatasetz TestDask.test_encoding_mfdataset  s   RY__R0012=|RdSSST 
 
 (?
G$ 	Q$ "" 
QdmmeAhhm//mmeArllm33*Aw'*Aw'd###d####T4L(CCC Qv!8,W59LW9UUUUU!8,W59PPPPP!8,W59PPPPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q
Q 
Q 
Q 
Q 
Q 
Q 
Q 
Q 
Q 
Q 
Q 
Q 
Q 
Q 
Q	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs\   &G5B#F5A9FF5F""F5%F"&F5)G5F9	9G<F9	=GGGc                n   t          ddt          j                            d          fi          }t	                      5 }|                    |           d } ||          }t          ||d          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr*  ri   r^   c                .    |                      d          S )Nr   )r  )assign_coordsr   s    rT   
preprocessz6TestDask.test_preprocess_mfdataset.<locals>.preprocess  s    ''!',,,rV   r  )r  r  )r   rk   r  r  r   r   r   r)   )r   rf  rE  r  r   r   s         rT   test_preprocess_mfdatasetz"TestDask.test_preprocess_mfdataset  sG   EC)<)<#=>?? 
	3#s###- - - "z(++H
K   3 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3s5   6B*5BB*B	B*B	B**B.1B.c                *   t          ddt          j                            d          fi          }|                    t          d                    |                    t          dd                    g}t                      5 }t                      5 }t          |||g           t          ||gdd          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S ra  )
r   rk   r  r  r  r  r   r   r   r)   )r   rf  datasetsrW  rX  r   s         rT   test_save_mfdataset_roundtripz&TestDask.test_save_mfdataset_roundtrip  s   EC)<)<#=>??MME!HHM--x}}uQ||}/L/LM 	7$ "" 7dx$666#4LS(   7$VX6667 7 7 7 7 7 7 7 7 7 7 7 7 7 77 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7sZ   D'C0<CC0CC0 C!C0$D0C4	4D7C4	8DDDc                >   t                      }t          j        t          d          5  t	          ||gddg           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          ||gdg           d d d            d S # 1 swxY w Y   d S )Nzcannot use moder   samezsame lengthzonly one path)r   r   r   r   r   r  s     rT   test_save_mfdataset_invalidz$TestDask.test_save_mfdataset_invalid  s   YY]:-?@@@ 	7 	7B8ff%5666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7]:^<<< 	8 	8B8o%6777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s#   AAA1BBBc                    t          ddg          }t          j        t          d          5  t	          |gdg           d d d            d S # 1 swxY w Y   d S )Nrs   rt   zsupports writing Datasetr   	dataarray)r   r   r   r  r   )r   r`  s     rT   %test_save_mfdataset_invalid_dataarrayz.TestDask.test_save_mfdataset_invalid_dataarray  s    1v]9,GHHH 	0 	0B4+///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   AAAc                f   t          ddt          j                            d          fi          }|                    t          d                    |                    t          dd                    g}t                      5 }t                      5 }t          |          }t          |          }t          |||g           t          ||gdd          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S ra  )r   rk   r  r  r  r  r   r   r   r   r)   )r   rf  r  rc  rd  rW  rX  r   s           rT   %test_save_mfdataset_pathlib_roundtripz.TestDask.test_save_mfdataset_pathlib_roundtrip#  s   EC)<)<#=>??MME!HHM--x}}uQ||}/L/LM 	7% "" 7eE{{E{{x$666#4LS(   7$VX6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s[   D&ADC7+D7C;;D>C;?DD&D	D&D	D&&D*-D*c                    ddg}t          j        |d          }t          j                    }||d<   t          t          d                    }dg}d}t          j        |g|g||	           d S )
Nr   rs   r  r  r  doublera   test.nc)ro   r%  )r  r   r   r  r   )r   rx  r  test_dsro   r%  output_paths          rT   test_save_mfdataset_pass_kwargsz(TestDask.test_save_mfdataset_pass_kwargs0  s    A|E	222 *,, T111222    	I}x	
 	
 	
 	
 	
 	
rV   c                ^   t          ddt          j                            d          fi          }t	                      5 }|                    |           t          |d          5 }d|z  }t          ||d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr*  ri   r^   r  rz  rN  Fr  )r   rk   r  r  r   r   r   r&   )r   rf  rE  r   r   s        rT   test_open_and_do_mathzTestDask.test_open_and_do_mathG  sN   EC)<)<#=>?? 	F#s###[999 FRr&uEEEEF F F F F F F F F F F F F F F	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs5   'B"&B
>B"
B	B"B	B""B&)B&c                   t                      5 }t                      5 }t          ddi          }|                    |           t          dt          j        i                              |           t          ||gd d          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nri   r   r  rQ  r   r   r   rk   rm   r   r)   r   rW  rX  rK   r   s        rT   #test_open_mfdataset_concat_dim_nonez,TestDask.test_open_mfdataset_concat_dim_noneO  s    	3$ "" 3dQx((t$$$bf&&00666#4LT8   3$T62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sY   CA)B;B$B;$B((B;+B(,B;/C;B?	?CB?	CCCc                   t                      5 }t                      5 }t          ddi          }|                    |           t          dt          j        i                              |           t          ||gd          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nri   r   r  rz  r  r  s        rT   +test_open_mfdataset_concat_dim_default_nonez4TestDask.test_open_mfdataset_concat_dim_default_noneZ  s    	3$ "" 3dQx((t$$$bf&&00666#T4L(CCC 3v$T62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sY   CA(B:B#B:#B''B:*B'+B:.C:B>	>CB>	CCCc                   t          ddt          j                            d          fi          }t	                      5 }|                    |           t          |ddi          5 }t          |j        j	        j
        t          j                  sJ |j        j	        j
        j        dk    sJ t          ||           d d d            n# 1 swxY w Y   t          |d          5 }t          ||           d d d            n# 1 swxY w Y   t          |          5 }t          |j        j	        j
        t          j                  sJ t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr*  ri   r^   r<  r  rR  )r   rk   r  r  r   r   r   r	  r*  rA  rK   r`  rU  r  r)   r  )r   rf  rE  r   s       rT   test_open_datasetzTestDask.test_open_datasetc  sd   EC)<)<#=>?? 
	3#s###c3(333 3v!&*"5":BHEEEEEz*/6)CCCC 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 c!,,, 3 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3c"" 3f!&*"5":BJGGGGG 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3 
	3s~   )E?(AC E?C	E?C	E?(D9E?D			E?D		E?<E'E?'E+	+E?.E+	/E??FFc                   t           j                            d          }t          dd|fi          }t	          dgdd          }t          dd|t           j        d d f         fiddgi          }t                      5 }|                    |           t          |g|d	          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr^   r*  ri   r  ry  rQ   r  ry  ri   r  rQ  )
rk   r  r  r   r   newaxisr   r   r   r)   )r   rnddatarf  r  r   rE  r   s          rT   test_open_single_datasetz!TestDask.test_open_single_datasetq  sr    )//"%%EC>233E666\72:qqq=#9:;ecU^
 
  	3#s####xHHH 3F 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s6   ?)C(C9CC			CC		CC!$C!c           
     v   t           j                            d          }t          dd|fi          }t	          ddgdd          }t          ddt          j        |t           j        d d f         d	          fidddgi          }t                      5 }t                      5 }|                    |           |                    |           t          ||g|d
          5 }t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr^   r*  ri   r     ry  r  r  rt   rs   r  rQ  )rk   r  r  r   r   tiler  r   r   r   r)   )r   r  rf  r  r   rW  rX  r   s           rT   test_open_multi_datasetz TestDask.test_open_multi_dataset  s    )//"%%EC>233c
U;;;\2772:qqq=+A6#J#JKLS#J
 
  	3$(9(9 	3Tt$$$t$$$th   3 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3sZ   D.#?D"C?3D?DDDD
D.D	D.D	D..D25D2c           	        t                      5 }t                      }|                    |           ddddd}t          ||          5 }t	          ||           t                      5 }|                    |           t          |          5 }t	          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r^   )r  r  r  r  r  )r   rA   r   r   r)   )r   rE  rK   r  dask_dsrX  r  s          rT   test_dask_roundtripzTestDask.test_dask_roundtrip  s    		8##%%DNN3ArBBFc&111 8W w///$&& 8$%%d+++%d++ 8w(w7778 8 8 8 8 8 8 8 8 8 8 8 8 8 88 8 8 8 8 8 8 8 8 8 8 8 8 8 88 8 8 8 8 8 8 8 8 8 8 8 8 8 8			8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8 		8s}   <C2C*%CB,	 C,B00C3B04C7CCC
CCC2C	C2!C	"C22C69C6c                <   t                      5 }t                      }|                    |           t          |d          5 }d |j                                        D             }d d d            n# 1 swxY w Y   t          |d          5 }d |j                                        D             }d d d            n# 1 swxY w Y   |                                D ]\  }}||v sJ |d d         dk    sJ ||k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  rz  c                .    i | ]\  }}||j         j        S r   rK   rQ   rY   r  r  s      rT   r  z5TestDask.test_deterministic_names.<locals>.<dictcomp>  s"    !R!R!RTQ!QV[!R!R!RrV   c                .    i | ]\  }}||j         j        S r   r  r  s      rT   r  z5TestDask.test_deterministic_names.<locals>.<dictcomp>  s"    PPP41a16;PPPrV      zopen_dataset-)r   rA   r   r   r  r  )r   rE  rK   r   original_namesrepeat_namesr  	dask_names           rT   test_deterministic_namesz!TestDask.test_deterministic_names  s    
	2##%%DNN3[999 SR!R!RR\=O=O=Q=Q!R!R!RS S S S S S S S S S S S S S S[999 QRPP2<;M;M;O;OPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q'5';';'='= 9 9#)9,,,, "~88888!\11111
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2 
	2sY   5D$A4(D4A8	8D;A8	<D$C 4D C	DC	;DDDc                    t          ddg                                          }|                                }|j        rJ |j        sJ t	          ||d           d S )Nrs   rt   Fr  )r   r  r$  r  r&   )r   r   r&  s      rT   test_dataarray_computezTestDask.test_dataarray_compute  si     Aq6""((**>>##$$$$""""u======rV   c                   ddl m} t          ddt          j                            d          fi                                          }|                    t          d                    |                    t          dd                    g}t          t                    5 }t          t                    5 }t          |||g| j        d	
          }t          ||          sJ |                                 t          ||gdd          5 }t!          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r  r*  ri   r^   r<  r  r   F)r   r$  r  r  )r  r  r   rk   r  r  r  r  r  r   r.  r   r   r	  r$  r   r)   )r   r  rf  r  rW  rX  r  r   s           rT   +test_save_mfdataset_compute_false_roundtripz4TestDask.test_save_mfdataset_compute_false_roundtrip  s   ((((((EC)<)<#=>??EEGGMME!HHM--x}}uQ||}/L/LM:>>> 
	7$ zBBB 	7d,tTl4;   "+w77777##%%%#4L(s   7$VX6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
	7 
	7 
	7 
	7 
	7 
	7 
	7 
	7 
	7 
	7 
	7 
	7 
	7 
	7 
	7 
	7 
	7 
	7s[   %E;AED-!E-D11E4D15E8EE	EE	EE #E c                &   t                      5 }t          ddt          j                            d          fi          }|                    |           t          |          }|                    |           d d d            d S # 1 swxY w Y   d S Nr*  ri   r^   )r   r   rk   r  r  r   r   r   rE  rf  r   s       rT   test_load_datasetzTestDask.test_load_dataset  s     	#RY__R-@-@'ABCCHs###c""BLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   A*BB
B
c                &   t                      5 }t          ddt          j                            d          fi          }|                    |           t          |          }|                    |           d d d            d S # 1 swxY w Y   d S r  )r   r   rk   r  r  r   r   r  s       rT   test_load_dataarrayzTestDask.test_load_dataarray  s     	#RY__R-@-@'ABCCHs###$$B LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  zBcounting number of tasks in graph fails on windows for some reasonc                   t                      5 }t          ddt          j                            d          fi          }|                    |           ddi}d }t          |d|          }t          |d|          } ||           ||          k     sJ t          |d|          }t          |d|          } ||           ||          k     sJ 	 d d d            d S # 1 swxY w Y   d S )	Nr*  ri   r^   r  c                D    t          |                                           S r   )r  __dask_graph__rI  s    rT   num_graph_nodesz3TestDask.test_inline_array.<locals>.num_graph_nodes  s    3--//000rV   F)inline_arrayr  T)r   r   rk   r  r  r   r   r   )	r   rE  rf  r  r  not_inlined_ds
inlined_dsnot_inlined_da
inlined_das	            rT   test_inline_arrayzTestDask.test_inline_array  st   
  	Q#RY__R-@-@'ABCCHs###b\F1 1 1 *#E&QQQN%cVLLLJ"?:..1P1PPPPP+CeFSSSN'$vNNNJ"?:..1P1PPPPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs   C	C&&C*-C*r  r   )2r   r   r   r  r  r   r   rn  r  ry  r  r  rE  rY  r2   r[  r_  re  ri  rk  rq  ru  rw  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   rV   rT   rF  rF    s           NS         / / / /B B B B&   6 6 6 65 5 5 5, D D D _D   :7 7 7 7? ? ? ?*
7 
7 
7 
7% % % %(3 3 3 3"3 3 3 3&7 7 7 7A A A A [CDDQ Q Q EDQ,3 3 3 3	7 	7 	7 	78 8 8 80 0 0 07 7 7 7
 
 
 
.F F F F	3 	3 	3 	33 3 3 33 3 3 33 3 3 33 3 3 32
8 
8 
8 
82 2 2 2> > > > [7 7 7 7"       [S   Q Q Q	 Q Q QrV   rF  z2ignore:The binary mode of fromstring is deprecatedc                  \    e Zd Zd Zej        d             Zd	dZd	dZe	d	d            Z
dS )
	TestPydapc                v   ddl m}m}m}  |di |j        }|j                                        D ]W\  }} ||          } |||j        fd|j        i|j        ||<   |j        D ]}	 ||	||	         j                  ||	<   |||<   X|j	        D ](}	 ||	||	         j        fd|	fi||	         j        ||	<   )|S )Nr   )BaseTypeDatasetTypeGridTypebearsr  )r  )
pydap.modelr  r  r  r  r  r  r%  r  r  )
r   rf  r  r  r  r   r   r  r  r  s
             rT   convert_to_pydap_datasetz"TestPydap.convert_to_pydap_dataset  s    ??????????[33HN33 *0022 	 	HCAXc3:PP#(PciPPAcFX 2 2x3q6=11!BsGG 	 	AH8A;% 34$:B1+:K BqEE 	rV   c              +    K   t          d          5 }|                     |          }t          t          |                    }|d                             t
                    |d<   ||fV  d d d            d S # 1 swxY w Y   d S )Nr}  r  )rU   r  r   r   astyper
  )r   rS   r   pydap_dsr   s        rT   create_datasetszTestPydap.create_datasets	  s      !*-- 	#44X>>H!.":":;;F !) 1 8 8 = =HW(""""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   AA::A>A>rI   r   c           
     J   |                                  5 \  }}t          ||           d|j        vsJ d|j        v sJ |j                                        |j                                        k    sJ 	 d d d            n# 1 swxY w Y   |                                  5 \  }}t          |ddi         |ddi                    d d d            n# 1 swxY w Y   |                                  5 \  }}t          |                    dd          |                    dd                     d d d            n# 1 swxY w Y   |                                  5 \  }}t          |                    t          dd          	          |                    t          dd          	                     d d d            n# 1 swxY w Y   |                                  5 \  }}g d
g dd}t           |j        di | |j        di |           d d d            n# 1 swxY w Y   |                                  5 \  }}t          g dd          t          g dd          d}t           |j        di | |j        di |           d d d            d S # 1 swxY w Y   d S )N	NC_GLOBALhistorylrt   r   rc   )r   jrs   )r  )rs   r   r   )rs   rt   r   rs   )r   rs   r   r   r  )r   rt   rs   r   )r  r(   r  r  r  r  r   )r   r   r   r  r  s        rT   test_cmp_local_filezTestPydap.test_cmp_local_file  s   !!## 
	@'9*** fl2222,,,,
 <$$&&(.*=*=*?*??????
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ 
	@ !!## 	?'9a)8S!H+=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? !!## 	K'9qB//b1I1IJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K !!## 	S'9uQ{{33X]]U1a[[]5Q5QRRR	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S !!## 	M'9&YY\\\::H00x00-(-2K2K(2K2KLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M !!## 	O'9yyys333yyys333 I 11y11=8=3M3M93M3MNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	Osn   A BB	B!$CCC0>D::D>D>AF==GG3HH"H:AJJJc                   |                                  5 \  }}t                      5 }|                    |           t          |          5 }|d                             t
                    |d<   t          ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  )r  r   r   r   r  r
  r(   )r   r   r   r9  r  s        rT   test_compatible_to_netcdfz#TestPydap.test_compatible_to_netcdf4  sy   !!## 	4'9 "" 4h  ***!(++ 4w'.w'7'>'>s'C'CGG$ (3334 4 4 4 4 4 4 4 4 4 4 4 4 4 44 4 4 4 4 4 4 4 4 4 4 4 4 4 4	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4sX   B;%B#4B B#BB#BB#B;#B'	'B;*B'	+B;;B?B?c                    |                      ddi          5 \  }}t          ||           d d d            d S # 1 swxY w Y   d S )Nr  rt   r  )r  r(   )r   r   r   s      rT   	test_daskzTestPydap.test_dask=  s    !!#q!22 	+6Hvx***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   :>>Nr   )r   r   r   r  r  r  r  r  r  r1   r  r   rV   rT   r  r    s          " # # #O O O OB4 4 4 4 + + + ]+ + +rV   r  c                  6    e Zd Zej        d             ZddZdS )TestPydapOnlinec              +     K   d}t          |fddi|}t          d          5 }|d                             t                    |d<   ||fV  d d d            d S # 1 swxY w Y   d S )Nz6http://test.opendap.org/opendap/hyrax/data/nc/bears.ncr   pydapr}  r  )r   rU   r  r
  )r   rS   urlr   r   s        rT   r  zTestPydapOnline.create_datasetsG  s      Fc<<'<V<<!*-- 	# ( 1 8 8 = =HW(""""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   *AA!ArI   r   c                   ddl m}  |dd          }t          j        d          5 }t          j        j                            d|           d d d            n# 1 swxY w Y   |                    dd |dd	
           d S )Nr   )setup_sessionXarrayTestUser
Xarray2017zpydap.client.open_urlzhttp://test.url)sessionTx   )r  applicationr  output_gridtimeout)	pydap.cas.ursr  r.   patchr  r   r   r   assert_called_with)r   r  r  	mock_funcs       rT   test_sessionzTestPydapOnline.test_sessionP  s    //////- 0,??Z/00 	PIK&++,=w+OOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P$$! 	% 	
 	
 	
 	
 	
s   'AA!ANr   )r   r   r   r  r  r  r  r   rV   rT   r  r  C  sG         # # #
 
 
 
 
 
rV   r  c                  L    e Zd Zd	dZej        d             Zd	dZd Zd	dZ	dS )
	TestPyNiorI   r   c                    d S r   r   r   s    rT   r  zTestPyNio.test_write_storeb  rd  rV   c              +  b   K   t          |fddi|5 }|V  d d d            d S # 1 swxY w Y   d S )Nr   r  r   r   s       rT   r   zTestPyNio.openf  s      $99w9&99 	RHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   $((c                   ddi}t           j                            t           j                            t                    dd          }t          j        |fi |5 }|j        j        d         dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   gribrK   example)	rL   rM   rN   rO   rP   r   NioDataStore_manager_kwargs)r   rS   rM   r  s       rT   test_kwargszTestPyNio.test_kwargsk  s    F#w||BGOOH55vyII"422622 	>e>)(3v=====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   BBBc                "     |j         |fddi|S )Nr   ra  )r   r   s       rT   r   zTestPyNio.saveq  s"     w @@g@@@@rV   c                p   t          ddt          j        d          fi          }|                    ddd          }t	                      5 }|                    |d           t          |d	          }|                    ddd          }~t          ||           d d d            d S # 1 swxY w Y   d S )
Nr*  ri         @rh  rH  ry  ra  r  r  )r   rk   r  renamer   r   r   r)   )r   r  r   r9  r  r   s         rT   test_weakrefszTestPyNio.test_weakrefst  s    53	#"7899>>%c":":;; 	/(hw777"8G<<<G^^E$<$<==FVX...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AB++B/2B/Nr   )
r   r   r   r  r  r  r   r  r   r  r   rV   rT   r  r  _  s              > > > >A A A	/ 	/ 	/ 	/ 	/ 	/rV   r  z*ignore:IOAPI_ISPH is assumed to be 6370000c                      e Zd Zd Zej        	 dd            ZddZddZdd	Z	e
dd
            Zej                            d          dd            Zd ZdS )TestPseudoNetCDFFormatc                     t          |fddi|S )Nr   pseudonetcdfr   )r   rM   rS   s      rT   r   zTestPseudoNetCDFFormat.open  s    DBBB6BBBrV   NFc              #     K   |i }|i }t          |          5 } | j        ||fi |  | j        |fi |5 }|V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   r   r   s          rT   r   z TestPseudoNetCDFFormat.roundtrip  r   r   rI   r   c                *   ddddddddfd}i i d	d
ddddddddddddddddddddddddd d!d"dd#d$d%d&d'd(d)dd*d+d,ig d-d. |dd/          d0g d1d. |d2d3/          d0g d4d. |d5d6/          d0g d7d. |d8d9/          d0g d:d. |d;d</          d0g d=d. |d;d>d?@          d0dAdB}t          j        |          }t          dCdDdEdFiG          5 }t          ||           dHdHdH           dHS # 1 swxY w Y   dHS )I:
        Open a CAMx file and test data variables
            irs   iHzN/Ai)r  missing_valuescale	llod_flag
llod_value	ulod_flag
ulod_valuec                 Z                                     }|                    |            |S r   )rd  r5  )r  outattrstdattrs     rT   myattsz6TestPseudoNetCDFFormat.test_ict_format.<locals>.myatts  s'    llnnGNN5!!!NrV   fmt1001n_header_lines   PI_NAMEzHenderson, BarronORGANIZATION_NAMEzU.S. EPASOURCE_DESCRIPTIONz!Example file with artificial dataMISSION_NAMEJUST_A_TESTVOLUME_INFOz1, 1SDATEz2018, 04, 27WDATETIME_INTERVAL0INDEPENDENT_VARIABLE_DEFINITION	Start_UTCINDEPENDENT_VARIABLEINDEPENDENT_VARIABLE_UNITS	ULOD_FLAGz-7777
ULOD_VALUE	LLOD_FLAGz-8888
LLOD_VALUEzN/A, N/A, N/A, N/A, 0.025z7www-air.larc.nasa.gov/missions/etc/IcarttDataFormat.htmR0zNo comments for this revision.)OTHER_COMMENTSREVISIONr5  TFLAGPOINTSr  )g     @g     @     @r:  )r9  )r   r  )rK   r  r  )g     D@      E@r;  r;  r"  rN  )g     Qg      Rg     @Rg     Rr#  rO  )r
  g      .@g      4@g      9@meterselev)gn?g@ge`TR@gڬ\mE@ppbv	TEST_ppbv)g(\@r  g     ag     \
TESTM_ppbvg?)r   r  r  )r.  rN  rO  r=  r?  r@  )r  r  r  r  example.ictr  r   ffi1001r   r  N)r   	from_dictrU   r)   )r   r  inputchkfileictfiler  s        @rT   test_ict_formatz&TestPseudoNetCDFFormat.test_ict_format  s   
 ""
 
	 	 	 	 	 v " . $Z	
 %&I  v     2; ' -k W e  W!" :#& S 6$/  2 qM A@@'#V+[QQQ  544'#V/OOO  988'#V.NNN  433'#V(&III  =<<'#V&LLL  >=='#V$LU   5! !9>
 >
~ #E**!.(IAV
 
 
 	/Wg...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   *DDDc                    ddi}t          dd|          5 }|                     ||d|i          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rB  rA  r  rC  r  r  )rU   r   r)   r   fmtkwr   r   s       rT   test_ict_format_writez,TestPseudoNetCDFFormat.test_ict_format_write  s   9%!.
 
 
 	3e:JE9R     3 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s4   A'AA'A	A'A	A''A+.A+c                   t          ddddi          }t          j        dd                              d	d	d
d          }t	          j        d|t          dd                    d          d                    d                              }|j        d         }t          ||           t          j
        ddgggd          }t	          j        d|t          d                    d          d                    d          d                    d                              }|j        d         }t          ||           |                                 dS )r  example.uamivr  r   uamivrC  rT  rg  ra   rs   r  r<  TSTEPLAYROWCOLppmO3   P   r   	long_namevar_desc r   r   rQ  VAR	DATE-TIMEr8  r_  rZ  r[  r   N)rU   rk   r  r4  r  r  r  ljustr   r&   rl   r  )r   camxfilerK   r   r   s        rT   test_uamiv_format_readz-TestPseudoNetCDFFormat.test_uamiv_format_read  sT   
 (NHgCV
 
 
 y3'''//1a;;;*u

2BPPP
 

 #D)&)))x7A,(444;)!--++ r**!''++  
 
 #G,&)))rV   c                   t          ddgdddddi          }t          j        dd	
                              dddd          }t          j        |gdz  d          }t          j        d|t          dd                    d          d                    d                              }|j	        d         }t          ||           t          j        ddgggd
                              dd          }t          d                    d          d                    d          d                    d                    }d}t          j        |||          }|j	        d         }t          ||           |                                 dS )r  rN  r  rQ  r  r   rO  )r   r  r  r  rT  rg  ra   rs   r  r<  rt   r   )axisrP  rU  rV  rW  rX  rY  r\  r   r8  r_  r`  r]  N)r\   rk   r  r4  concatenater  r  r  ra  r   r&   rl   repeatr  )r   rb  r  rK   r   r   r  r  s           rT   test_uamiv_format_mfreadz/TestPseudoNetCDFFormat.test_uamiv_format_mfread  s    *o.!$g.
 
 
 	"C(((00Aq!<<~ugk222;*u

2BPPP
 

 #D)&)))x7A,(444;;AqAAmmB'']]2&&##B''
 
 

 -;tT511#G,&)))rV   zFlaky; see GH3711r  c                    ddi}t          dd|          }|                     ||d|id          5 }t          ||           d d d            n# 1 swxY w Y   |                                 d S )	Nr   rO  rN  r  rC  r  T)r   r   r   )rU   r   r)   r  rJ  s       rT   test_uamiv_format_writez.TestPseudoNetCDFFormat.test_uamiv_format_write8  s    7#'N5
 
 
 ^^)51"&	  
 
 	/
 Xv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	s   AAAc                d   dd l                                 fd|j                                        D             _        fd|j                                        D             _        |j                                        D ]\  }}t          ||            j        |fi | d S )Nr   c                F    i | ]\  }}|                     ||          S r   )PseudoNetCDFDimensionrY   r  r  pncpncfs      rT   r  z/TestPseudoNetCDFFormat.save.<locals>.<dictcomp>M  s>     
 
 
9=AAs((q!44
 
 
rV   c           	     |    i | ]8\  }}| j         ||j        j        |j        fd |j        d         i|j        9S )r%  .)PseudoNetCDFVariablerb   charr  rK   r  rn  s      rT   r  z/TestPseudoNetCDFFormat.save.<locals>.<dictcomp>P  sm     
 
 
 1 's'aqv 67fSkEFW 
 
 
rV   )	PseudoNetCDFPseudoNetCDFFiler  r  r  r   r  setattrpncwrite)r   r   rM   r   pkpvro  rp  s         @@rT   r   zTestPseudoNetCDFFormat.saveI  s    """"##%%
 
 
 
 
AHASASAUAU
 
 

 
 
 
 
  )//11	
 
 
 m))++ 	" 	"FBD"b!!!!T4//;/////rV   r  r   )r   r   r   r   r  r  r   rH  rL  rc  r1   rh  r   r   r-  rj  r   r   rV   rT   r  r    s        C C C NS
 
 
 
V/ V/ V/ V/p3 3 3 3   > ! ! ! ]!F [122   32 0 0 0 0 0rV   r  c                  4    e Zd ZddZed             ZddZdS )TestEncodingInvalidrI   r   c                   t          j        dg di ddi          }t          j        t          d          5  t          |d           d d d            n# 1 swxY w Y   t          j        dg di d	d
i          }t          |          }i |k    sJ t          j        dg di ddi          }t          |d          }ddi|k    sJ t          j        dg di ddi          }t          |d          }i |k    sJ d S )Nr  r  r*  rh  ri  r   Traise_on_invalidchunkingr  r  r  r$  r  r  r   r   r   r   )r   r  ro   s      rT   "test_extract_nc4_variable_encodingz6TestEncodingInvalid.test_extract_nc4_variable_encoding]  ss   k&)))R%@@]:-CDDD 	G 	G*3FFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G k&)))R*f1EFF1#66X~~~~ k&)))R)T1BCC1#MMM4 H,,,, k&)))R,1EFF1#fMMMX~~~~~~s   AAAc                `    t          j        dg di ddi          }t          |dd           d S )Nr  r  r  szlibr  T)backendr~  )r  r  r   )r   monkeypatchr  s      rT   *test_extract_nc4_variable_encoding_netcdf4z>TestEncodingInvalid.test_extract_nc4_variable_encoding_netcdf4p  s>     k&)))R-1IJJ&sIPTUUUUUUrV   c                    t          j        dg di ddi          }t          j        t          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )	Nr  r  least_sigificant_digitrt   ri  r   Tr}  r  )r   r  s     rT   test_extract_h5nc_encodingz.TestEncodingInvalid.test_extract_h5nc_encodingv  s    k&)))R2JA1NOO]:-CDDD 	G 	G*3FFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   AAANr   )r   r   r   r  r5   r  r  r   rV   rT   r{  r{  \  sa           & V V V
G G G G G GrV   r{  c                      e Zd ZdS )
MiscObjectNr   r   rV   rT   r  r  }  s        DrV   r  c                      e Zd ZddZdS )TestValidateAttrsrI   r   c                   d fd}fd}fd}|||fD ][} |            \  }}d|d<   t          j        t          d          5  |                    d	           d d d            n# 1 swxY w Y    |            \  }}d|t	                      <   t          j        t          d
          5  |                    d	           d d d            n# 1 swxY w Y    |            \  }}d|d<   t          j        t
          d          5  |                    d	           d d d            n# 1 swxY w Y    |            \  }}d|d<   t                      5 }|                    |           d d d            n# 1 swxY w Y    |            \  }}ddi|d<   t          j        t          d          5  |                    d	           d d d            n# 1 swxY w Y    |            \  }}t	                      |d<   t          j        t          d          5  |                    d	           d d d            n# 1 swxY w Y    |            \  }}d|d<   t                      5 }|                    |           d d d            n# 1 swxY w Y    |            \  }}d|d<   t                      5 }|                    |           d d d            n# 1 swxY w Y    |            \  }}g d|d<   t                      5 }|                    |           d d d            n# 1 swxY w Y    |            \  }}d|d<   t                      5 }|                    |           d d d            n# 1 swxY w Y    |            \  }}t          j        d          |d<   t                      5 }|                    |           d d d            n# 1 swxY w Y    |            \  }}d|d<   t                      5 }|                    |           d d d            n# 1 swxY w Y    |            \  }}d|d<   t                      5 }|                    |           d d d            n# 1 swxY w Y   ]d S )Nc                 v    t          ddt          j        d          fidt          j        d          i          S )NrK   rH  r   r^   )r   rk   r  r   rV   rT   new_datasetz<TestValidateAttrs.test_validating_attrs.<locals>.new_dataset  s1    FS")D//$:;c29R===QRRRrV   c                 *                 } | | j         fS r   rB  r   r  s    rT   new_dataset_and_dataset_attrszNTestValidateAttrs.test_validating_attrs.<locals>.new_dataset_and_dataset_attrs  s    Brx<rV   c                 4                 } | | j         j        fS r   )rK   r  r  s    rT   new_dataset_and_data_attrszKTestValidateAttrs.test_validating_attrs.<locals>.new_dataset_and_data_attrs  s    Brw}$$rV   c                 @                 } | | j         d         j        fS )NrH  )r  r  r  s    rT   new_dataset_and_coord_attrszLTestValidateAttrs.test_validating_attrs.<locals>.new_dataset_and_coord_attrs  s"    Bry~+++rV   rY  r  zInvalid name for attr: 123r   r  zInvalid name for attr: rb  zInvalid name for attr '':r   r<  zInvalid value for attr 'test'gQ	@r"  )gffffff?g      @zThis is a string)	r   r   r  r   r  r   r   rk   r  )	r   r  r  r  new_dataset_and_attrsr   r  r9  r  s	           @rT   test_validating_attrsz'TestValidateAttrs.test_validating_attrs  s   	S 	S 	S	  	  	  	  	 	% 	% 	% 	% 	%	, 	, 	, 	, 	,
 *&'&
 F	' F	'!
 .-//IBE#Jy0MNNN ( (Y'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( .-//IB"(E*,,y0JKKK ( (Y'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( .-//IBE"Iz1MNNN ( (Y'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( .-//IB"E&M "" 'hX&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' .-//IB !HE&My0PQQQ ( (Y'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( .-//IB&LLE&My0PQQQ ( (Y'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( .-//IBE&M "" 'hX&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' .-//IB E&M "" 'hX&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' .-//IB(LLE&M "" 'hX&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' .-//IB&E&M "" 'hX&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' .-//IBIaLLE&M "" 'hX&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' .-//IB.E&M "" 'hX&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' .-//IBE&M "" 'hX&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'KF	' F	's   	A++A/	2A/	/CC	C		D++D/	2D/	E88E<	?E<	2GG	G	H::H>	H>	%JJ	J	2KK	K	L##L'	*L'	M00M4	7M4	-OO	O	:PP 	#P 	Q))Q-	0Q-	Nr   )r   r   r   r  r   rV   rT   r  r    s.        V' V' V' V' V' V'rV   r  c                  N    e Zd Zd
dZd
dZd
dZd
dZed
d            Zd
dZ	d	S )TestDataArrayToNetCDFrI   r   c                T   t          t          j        d                              d                    }t	                      5 }|                    |           t          |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S Nr  rI  r  r   rk   r  r4  r   r   r   r)   r   original_darE  	loaded_das       rT    test_dataarray_to_netcdf_no_namez6TestDataArrayToNetCDF.test_dataarray_to_netcdf_no_name  s   	" 5 5f = =>> 	9#!!#&&&$$ 9	 i8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s6   %B(B9BB			BB		BB!$B!c                X   t          t          j        d                              d          d          }t	                      5 }|                    |           t          |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  rY  r3  r  r  s       rT   "test_dataarray_to_netcdf_with_namez8TestDataArrayToNetCDF.test_dataarray_to_netcdf_with_name  s   	" 5 5f = =FKKK 	9#!!#&&&$$ 9	 i8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s6   %B*B;BB	BB	BB#&B#c                ^   t          t          j        d                              d          ddgd          }t	                      5 }|                    |           t          |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  ri   rH  r  r  r  s       rT   )test_dataarray_to_netcdf_coord_name_clashz?TestDataArrayToNetCDF.test_dataarray_to_netcdf_coord_name_clash  s*   IbMM!!&))c

 
 
  	9#!!#&&&$$ 9	 i8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s6   %B"-B
>B"
B	B"B	B""B&)B&c                   t          t          j        d          ddt          d          fidg          }t	                      5 }|                    |           |                    d          }t          |dg          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr<  rH  ri   r  r  )drop_variables)	r   rk   r  r  r   r   rP  r   r)   )r   rK   rE  r   loadeds        rT   test_open_dataarray_optionsz1TestDataArrayToNetCDF.test_open_dataarray_options  s6   1sS%((O.DC5QQQ 	3#NN3~~c**HSE::: 3f 62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3		3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s6   =B7BB7B#	#B7&B#	'B77B;>B;c                    t          j        g d          }|                                }t          |t                    sJ d S )Nr  )r  r   r   r	  r[  )r   rK   outputs      rT   %test_dataarray_to_netcdf_return_bytesz;TestDataArrayToNetCDF.test_dataarray_to_netcdf_return_bytes  sB     |III&&!!&%(((((((rV   c                r   t          t          j        d                              d                    }t	                      5 }t          |          }|                    |           t          |          5 }t          ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r  )	r   rk   r  r4  r   r   r   r   r)   )r   r  tmpsrE  r  s        rT   (test_dataarray_to_netcdf_no_name_pathlibz>TestDataArrayToNetCDF.test_dataarray_to_netcdf_no_name_pathlib  s!   	" 5 5f = =>> 	9$t**C!!#&&&$$ 9	 i8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9		9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s6   4B,7BB,B	B,B	B,,B03B0Nr   )
r   r   r   r  r  r  r  r9   r  r  r   rV   rT   r  r    s        9 9 9 99 9 9 9	9 	9 	9 	93 3 3 3 ) ) ) ^)9 9 9 9 9 9rV   r  c                  F    e Zd Zd	dZd	dZd	dZd	dZed	d            ZdS )
TestDataArrayToZarrrI   r   c                   t          t          j        d                              d                    }|                    |           t          |d          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nr  r  r|  r  r   rk   r  r4  rz  r   r)   r   r  r  r  s       rT   test_dataarray_to_zarr_no_namez2TestDataArrayToZarr.test_dataarray_to_zarr_no_name  s    	" 5 5f = =>>I&&&If555 	5[)444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   A99A= A=c                   t          t          j        d                              d          d          }|                    |           t          |d          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nr  r  rY  r3  r|  r  r  r  s       rT    test_dataarray_to_zarr_with_namez4TestDataArrayToZarr.test_dataarray_to_zarr_with_name!  s    	" 5 5f = =FKKKI&&&If555 	5[)444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   A;;A?A?c                   t          t          j        d                              d          ddgd          }|                    |           t          |d          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nr  r  ri   rH  r  r|  r  r  r  s       rT   'test_dataarray_to_zarr_coord_name_clashz;TestDataArrayToZarr.test_dataarray_to_zarr_coord_name_clash)  s    IbMM!!&))c

 
 
 	I&&&If555 	5[)444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s    A>>BBc                >   t          t          j        d          ddt          d          fidg          }|                    |           |                    d          }t          |ddg          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nr<  rH  ri   r  r|  )r   r  )r   rk   r  r  rz  rP  r   r)   )r   r  rK   r   r  s        rT   r  z/TestDataArrayToZarr.test_open_dataarray_options3  s    1sS%((O.DC5QQQY>>#&&IfcUKKK 	/vXv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/r  c                h   ddl m} t          t          j        d                              d                    }|                    |d          }t          ||          sJ |                                 t          |d          5 }t          ||           d d d            d S # 1 swxY w Y   d S )	Nr   r  r  r  Fr  r|  r  )r  r  r   rk   r  r4  rz  r	  r$  r   r)   )r   r  r  r  r  r  s         rT   $test_dataarray_to_zarr_compute_falsez8TestDataArrayToZarr.test_dataarray_to_zarr_compute_false<  s    ((((((	" 5 5f = =>>$$Y$>>&'*****If555 	5[)444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   	B''B+.B+Nr   )	r   r   r   r  r  r  r  r1   r  r   rV   rT   r  r    s        5 5 5 55 5 5 55 5 5 5/ / / / 	5 	5 	5 ]	5 	5 	5rV   r  c                     t                      5 } t                      5  t                      }|                    |            d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r   )r   r*   r   r   )tmpfiler   s     rT   'test_no_warning_from_dask_effective_getr  I  s    			 "g!! 	" 	"BLL!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" " " " " " " " " " " " " " " " " "s4   A&$AA&A	A&A	A&&A*-A*c                 X   t           j                            d          } t          dd| fi          }t	                      5 }|                    |           t          |          5 }|j        d         |k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S Nr^   r*  ri   source)rk   r  r  r   r   r   r   ro   r  rf  rE  r   s       rT   #test_source_encoding_always_presentr  Q  s)    ioob!!GW~.//H			 0c3# 	0";x(C/////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s6   %B&B;BB	BB	BB#&B#c                 r   t           j                            d          } t          dd| fi          }t	                      5 }|                    |           t          t          |                    5 }|j        d         |k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S r  )	rk   r  r  r   r   r   r   r   ro   r  s       rT   0test_source_encoding_always_present_with_pathlibr  \  s/    ioob!!GW~.//H			 0c3$s))$$ 	0;x(C/////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s6   2B,3BB,B	B,B	B,,B03B0c                D    d}| D ]}|t          |j                  vsJ d S )Nzdates out of range)r
  message)recordundesired_messagewarnings      rT   %_assert_no_dates_out_of_range_warningr  g  s?    , = = GO(<(<<<<<<= =rV   r  c                   ddg}ddg}d}d}t          |d|fgd                                          }d	D ]"}|||         j        d
<   | ||         j        d<   #t          j        |                              d          }t          j        |                              d          }t          j        |d          |z   }	t          j        |d          |z   }
t          |	d|
fgd          }t          |
d|
fgd          }t                      5 }|                    |           t          j
        d          5 }t          |          5 }t          ||j                   t          ||j                   d d d            n# 1 swxY w Y   t          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rs     rq  r  r  ri   r3  ri   r  r   r  timedelta64[D]nsTr  r   r@  r  rk   rl   r  
datetime64r   r   r  r  r   r)   ri   r  r  r  ri   r  
units_dater   rf  r  x_timedeltastime_timedeltas	decoded_xdecoded_time
expected_xexpected_timer9  r  r   s                   rT   2test_use_cftime_standard_calendar_default_in_ranger  m  s    
AAs8DJ#Efd^,3777BBDDH 1 1%*'"(0*%%8A;;%%&677Lhtnn++,<==Oj$//,>I=T22_DL9'=&>SIIIJlfl-C,D6RRRM			 :h8$$$$D111 	:Vh'' 92 RT222 8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 2&999		: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:: : : : : : : : : : : : : : : : : :sZ   +F?:F'
+F5F'FF'F	F'F?'F+	+F?.F+	/F??GG
units_year  	  c                   dd l }ddg}ddg}d| d}t          |d|fgd                                          }d	D ]"}|||         j        d
<   | ||         j        d<   #|                    ||| d          }|                    ||| d          }	t          |d|	fgd          }
t          |	d|	fgd          }t                      5 }|                    |           t          j        t                    5  t          |          5 }t          |
|j                   t          ||j                   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rs   r  days since -01-01r  ri   r3  r  r   r  Tonly_use_cftime_datetimes)cftimer   r@  r  num2dater   r   r   r  r    r   r)   ri   r  )r  r  r  ri   r  r   rf  r  r  r  r  r  r9  r   s                 rT   6test_use_cftime_standard_calendar_default_out_of_ranger    si    MMM	
AAs8D,*,,,Efd^,3777BBDDH 1 1%*'"(0*%%5(dSSI??eX #  L 9'=&>SIIIJlfl-C,D6RRRM			 9h8$$$\.// 	9 	9h'' 92 RT222 8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	99 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9sZ   	/E.8E+D?3E?EEEE
E.E	E.E	E..E25E2)r  i  r  c                   dd l }ddg}ddg}d| d}t          |d|fgd                                          }d	D ]"}|||         j        d
<   | ||         j        d<   #|                    ||| d          }|                    ||| d          }	t          |d|	fgd          }
t          |	d|	fgd          }t                      5 }|                    |           t          j        d          5 }t          |d          5 }t          |
|j                   t          ||j                   d d d            n# 1 swxY w Y   t          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rs   r  r  r  r  ri   r3  r  r   r  Tr  r  r%  )r  r   r@  r  r  r   r   r  r  r   r)   ri   r  r  )r  r  r  ri   r  r   rf  r  r  r  r  r  r9  r  r   s                  rT   test_use_cftime_truer    s~   
 MMM	
AAs8D,*,,,Efd^,3777BBDDH 1 1%*'"(0*%%5(dSSI??eX #  L 9'=&>SIIIJlfl-C,D6RRRM			 :h8$$$$D111 	:Vh4888 9B RT222 8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 2&999		: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:: : : : : : : : : : : : : : : : : :sZ   	+E;4E#+D=1E#=EE#EE#E;#E'	'E;*E'	+E;;E?E?c                   ddg}ddg}d}d}t          |d|fgd                                          }d	D ]"}|||         j        d
<   | ||         j        d<   #t          j        |                              d          }t          j        |                              d          }t          j        |d          |z   }	t          j        |d          |z   }
t          |	d|
fgd          }t          |
d|
fgd          }t                      5 }|                    |           t          j
        d          5 }t          |d          5 }t          ||j                   t          ||j                   d d d            n# 1 swxY w Y   t          |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rs   r  rq  r  r  ri   r3  r  r   r  r  r  Tr  Fr  r  r  s                   rT   0test_use_cftime_false_standard_calendar_in_ranger    s    
AAs8DJ#Efd^,3777BBDDH 1 1%*'"(0*%%8A;;%%&677Lhtnn++,<==Oj$//,>I=T22_DL9'=&>SIIIJlfl-C,D6RRRM			 :h8$$$$D111 	:Vh5999 9R RT222 8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 2&999		: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:: : : : : : : : : : : : : : : : : :sZ   +G:F)+F7F)FF)
FF)G)F-	-G0F-	1GGGc                   ddg}ddg}d| d}t          |d|fgd                                          }d	D ]"}|||         j        d
<   | ||         j        d<   #t                      5 }|                    |           t          j        t          t          f          5  t          |d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rs   r  r  r  r  ri   r3  r  r   r  Fr  
r   r@  r  r   r   r   r   r   r   r   r  r  ri   r  r   rf  r  r9  s           rT   4test_use_cftime_false_standard_calendar_out_of_ranger    s    
AAs8D,*,,,Efd^,3777BBDDH 1 1%*'"(0*%%			 5h8$$$]/<== 	5 	5e4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	55 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s6   )6CB=1C=C	CC	CCCc                   ddg}ddg}d| }t          |d|fgd                                          }dD ]"}|||         j        d	<   | ||         j        d
<   #t                      5 }|                    |           t          j        t          t          f          5  t          |d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   rs   r  r  r  ri   r3  r  r   r  Fr  r  r  s           rT   *test_use_cftime_false_nonstandard_calendarr    s}    
AAs8D&*&&Efd^,3777BBDDH 1 1%*'"(0*%%			 5h8$$$]/<== 	5 	5e4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	55 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s6   (6CB<0C<C 	 CC 	CCCr   rV  ra  c                    t                      }t          j        t          d          5  |                    d| d           d d d            d S # 1 swxY w Y   d S )Nz$unrecognized option 'invalid_netcdf'r   r  T)r   r  )rA   r   r   r   r   )r   rK   s     rT   test_invalid_netcdf_raisesr    s    D	z)P	Q	Q	Q E ExtDDDE E E E E E E E E E E E E E E E E Es   AAAc                    t          j        g d          } g d}t          j                            |           }t          |t                    sJ ||k    sJ t          j        d          d         }d}t          j                            |          }t          |t                    sJ ||k    sJ d}t          j                            |          }t          |t                    sJ ||k    sJ d S )Nr  rs   r   r*  )	rk   rl   r   r|  encode_zarr_attr_valuer	  r3  r  r
  )arr	expected1r  sarr	expected2r  	expected3actual3s           rT   test_encode_zarr_attr_valuer    s     (999

C		Im22377Ggt$$$$$i 8A;;r?DIm22488Ggs#####i Im229==Ggs#####irV   c                 v   t          j        dddg          } t          j                            |           }d|v sJ |d         J t          j        dddgddi          } t          j                            |           }|d         dk    sJ t          j        dddgddi          } t          j                            |           }t          j        dddgddi          } t          j        t          d	          5  t          j                            | d
          }d d d            d S # 1 swxY w Y   d S )Nri   rs   rt   r  r   rf  r*  zunexpected encoding parametersr   Tr}  )r  r  r   r|  extract_zarr_variable_encodingr   r   r   )r  r   s     rT   #test_extract_zarr_variable_encodingr  &  s   
+cAq6
"
"C]99#>>Fv(###
+cAq6Xt,<
=
=
=C]99#>>F(t#### +cAq6UDM
:
:
:C]99#>>F +cAq6UDM
:
:
:C	z)J	K	K	K 
 
==$ > 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   ?"D..D25D2c                 d   dd l } dd l}t          |j        d          rt          |j        j        d          st          j        d           t          t          j	        
                    t          j	                            t                    dd                    }|                     d          }|                    d          }|                    |           |                                }|j        t%          j        d	          z   |d
<   |                    d          }|                    |           d}t          |d          }t(          j                            ||           d}t          |d          }t(          j                            ||           d}t/          |d          }t(          j                            t)          j        ||gd
          |           d}t/          |d          }t(          j                            t)          j        ||gd
          |           d S )Nr   FSStoregetitemszzarr too oldrK   r  memoryz	out1.zarrz1 dayr  z	out2.zarrzmemory://out2.zarrr|  r  zsimplecache::memory://out2.zarrzmemory://out*.zarrr  zsimplecache::memory://out*.zarr)fsspecr|  r  storager  r   rL  r   rL   rM   rN   rO   rP   
filesystem
get_mapperrz  rd  r  rv  r  r  testingr(   r   r  )r	  r|  r   mmmds0r  r=  s           rT   test_open_fsspecr  =  s    MMMKKK4<++ $7j4 4 $ 	N###	bgll27??8#<#<fnUU	V	VB(##A	
k	"	"BJJrNNN
''))C'BOG444CK	
k	"	"BKKOOO C
s6
*
*
*CJC%%% ,C
s6
*
*
*CJC%%% C
V
,
,
,CJBIr3iV<<<cBBB ,C
V
,
,
,CJBIr3iV<<<cBBBBBrV   r  r   c           
     \   t          j        dt          j        t          j        dg          dddd          i          }|                    | dz             t          j        | dz  d	          5 }|d         d                                          d
d
d
           d
S # 1 swxY w Y   d
S )ay  Test that numeric single-element vector attributes are handled fine.

    At present (h5netcdf v0.8.1), the h5netcdf exposes single-valued numeric variable
    attributes as arrays of length 1, as opposed to scalars for the NetCDF4
    backend.  This was leading to a ValueError upon loading a single value from
    a file, see #4471.  Test that loading causes no failure.
    rY  r   r  rs   )rh   rg   )r  r  r  r  r  N)r  r   r   rk   rl   r   r   r!  )r  r   r=  s      rT   test_load_single_value_h5netcdfr  h  s     
BL!F1TU2V2V  	

 
B LLI%&&&	I-j	A	A	A SFA                 s   3!B!!B%(B%r  r  rc   ri   rG  c                :   d}t          j        t          j        dd          |          }t	          j        dt	          j        |d          i          }||d         j        d	<   |                    |d
z             t          j
                            ddi          5  |                    |           }t          |d
z  d|           5 }t          j                            ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr    r  r  ra   r  rY  rG  r  r  	test.zarrarray.chunk-size1MiBr|  r   r  )r`  
from_arrayrk   r  r  r   r   ro   rz  rF   configr'  r  r   r  assert_chunks_equalr  r  encoded_chunksdask_arrr   r   r   s          rT   test_open_dataset_chunking_zarrr!  ~  s    N}

),,,^  H 
BL  	

 
B %3BvJ!JJx+%&&&	,f5	6	6 = =88F##{"6&
 
 
 	=J**68<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	== = = = = = = = = = = = = = = = = =s6    +D!C8,D8C<	<D?C<	 DDDr  c                   i }t          j        t          j        dd          |          }t	          j        dt	          j        |d          i          }||d         j        d<   |                    |d	z             |	                    |d
z             t          j                            ddi          5  |                    |           }t	          j        |d	z  d|           5 }t          j                            ||           d d d            n# 1 swxY w Y   t	          j        |d
z  |           5 }t          j                            ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r  ra   r  rY  rG  r  r  r  r  r  r  r|  r  )r`  r  rk   r  r  r   r   ro   rz  r   rF   r  r'  r  r   r  r  r  s          rT   test_chunking_consintencyr#    sK    &(N}

),,,^  H 
BL  	

 
B %3BvJ!JJx+%&&&LLI%&&&	,f5	6	6 = =88F##_{"6&
 
 
 	=J**68<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=
 _X	1&AAA 	=VJ**68<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	== = = = = = = = = = = = = = = = = =sZ   80E>(!D	E>D	E>D	E>9!E&E>&E*	*E>-E*	.E>>FFc                    |                      |          sJ t          ||          5 }t          ||           d d d            d S # 1 swxY w Y   d S )Nr  )guess_can_openr   r)   )
entrypointr  r   r   r   s        rT   _check_guess_can_open_and_openr'    s    $$S)))))	c&	)	)	) +V6***+ + + + + + + + + + + + + + + + + +s   AAAc                   t                      }t                      }| dz  }|                    |d           t          ||d|           t          |t	          |          d|           | dz  }|                    |d           t          ||d|           t          |t	          |          d|           |                    d          sJ |                    d	          sJ |                    d
          sJ |                    d          sJ |                    d          rJ | dz  }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   |                    |          rJ d S )Nr*  r   r   rV  r   r   rh  r  zhttp://something/remotesomething-local.ncsomething-local.nc4something-local.cdfnot-found-and-no-extensionry  rq     not-a-netcdf-file)r   rA   r   r'  r
  r%  r   writer  r&  r   rM   rg  s        rT   test_netcdf4_entrypointr1    s   )++J			BeDLL/L000":tIPRSSSS":s4yyUWXXXXeDLL/L000":tIPRSSSS":s4yyUWXXXX$$%>?????$$%9:::::$$%:;;;;;$$%:;;;;;(()EFFFFFeD	dD		 &Q	$%%%& & & & & & & & & & & & & & &((.......s   E%%E),E)c                   t                      }t                      }| dz  }|                    |d           t          ||d|           t          |t	          |          d|           t          |d          5 }t          ||d|           d d d            n# 1 swxY w Y   |                    d          }t          ||d|           t          |t          |          d|           | dz  }t          j        |d          5 }|                    |           d d d            n# 1 swxY w Y   t          ||d|           t          |t	          |          d|           |	                    d	          sJ |	                    d
          sJ |	                    d          rJ |	                    d          rJ d S )Nr*  ra  r  r)  rr  z	foo.nc.gzrq  r  r*  zsomething-local.nc.gzr-  r.  )
r   rA   r   r'  r
  r   r   r  r/  r%  )r  r&  r   rM   rg  contentss         rT   test_scipy_entrypointr4    sw   '))J			BeDLLgL&&&":tGbQQQQ":s4yySUVVVV	dD		 SQ&z1WrRRRRS S S S S S S S S S S S S S S ||7|++H":xRTUUUU"GH%%g    k!D	4d	#	#	# q	              ":tGbQQQQ":s4yySUVVVV$$%9:::::$$%<=====(()EFFFFF(()=>>>>>>>s$   <BB #B D--D14D1c                
   t                      }t                      }| dz  }|                    |d           t          ||d|           t          |t	          |          d|           t          |d          5 }t          ||d|           d d d            n# 1 swxY w Y   |                    d          sJ |                    d          sJ |                    d          sJ |                    d	          rJ d S )
Nr*  r  r  r)  rr  r*  r+  r,  r-  )r   rA   r   r'  r
  r   r%  r0  s        rT   test_h5netcdf_entrypointr6    sv   *,,J			BeDLLjL)))":tJQSTTTT"CIIj2    
dD		 VQ&z1ZRTUUUUV V V V V V V V V V V V V V V $$%9:::::$$%:;;;;;$$%:;;;;;(()EFFFFFFFs   <BB #B str_typec                     fddD             }t          dd          }t          j        t          j                            t          |          t          |          f          ||          }d|j        _        d|j        _        |	                                }d|_        |
                                }|                    |                    d	                     d S )
Nc                &    g | ]} |          S r   r   )rY   r  r7  s     rT   rZ   z/test_write_file_from_np_str.<locals>.<listcomp>  s!    QQQ!QQQrV   )
scenario_a
scenario_b
scenario_ci  i5  )rK   columnsindexscenarioyeartasr  )r  rv  	DataFramerk   r  r  r>  rQ   r=  r  	to_xarrayr   rN   )r7  tmpdir	scenariosyearstdftxrs   `     rT   test_write_file_from_np_strrI    s     RQQQ&PQQQI$!!E
,Ys9~~s5zz:;;  C
  CINCK
))++CCH
--//CMM&++i(()))))rV   c                      e Zd Zed             Zd ZddZddZej	        
                    ddd	g          ej	                            d
          dd                        ZdS )
TestNCZarrc                r    t          t          j                                                    d                   S )Nr   )r   r  getlibversionsplitr   s    rT   netcdfc_versionzTestNCZarr.netcdfc_version(  s*    s(**002215666rV   c                \   | j         t          d          k     rt          j        d           t	          j                    dk    r,| j         t          d          k    rt          j        d           t                      }|                    d          }|                    d| d           |S )N4.8.1zrequires netcdf-c>=4.8.1Windowsz%netcdf-c==4.8.1 has issues on Windowsr  zfile://z#mode=nczarr)	rO  r   r   rL  platformsystemrA   rP  r   )r   filenamer   s      rT   _create_nczarrzTestNCZarr._create_nczarr,  s    ''"2"222K2333?	))d.BggFVFV.V.V K?@@@ \\&!!
5x555666	rV   rI   r   c                    t          d          5 }|                     |          }t          j        |d          }t	          ||           d d d            d S # 1 swxY w Y   d S )NrA  rB  Fr~  )r   rV  r  r  r)   )r   rE  r   r   s       rT   test_open_nczarrzTestNCZarr.test_open_nczarr<  s    G,,, 	/**3//H\#E:::FXv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   <AA!Ac                   t          d          5 }|                     |          }|dg         }|                    |d           t          j        |d          }t          ||           d d d            d S # 1 swxY w Y   d S )NrA  rB  r  r   r  FrX  )r   rV  rz  r  r  r)   )r   rE  r   r   r   s        rT   test_overwriting_nczarrz"TestNCZarr.test_overwriting_nczarrB  s    G,,, 	/$$S))B6(|HSs+++\#E:::FXv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AA::A>A>r   r   r  z$ignore:.*non-consolidated metadata.*c                n   | j         t          d          k    rt          j        d           t	          d          5 }|                     |          }t          j        t          d          5  |                    ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NrQ  z3netcdf-c>4.8.1 adds the _ARRAY_DIMENSIONS attributerA  rB  z*missing the attribute `_ARRAY_DIMENSIONS`,r   r  )	rO  r   r   rL  r   rV  r   rl  rz  )r   r   rE  r   s       rT   test_raise_writing_to_nczarrz'TestNCZarr.test_raise_writing_to_nczarrJ  s:    ''"2"222KMNNNG,,, 	+$$S))B L   + + 

3T
***+ + + + + + + + + + + + + + +	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s5   1B*.BB*B	B*B	B**B.1B.Nr   )r   r   r   propertyrO  rV  rY  r[  r   r   r  r  r]  r   rV   rT   rK  rK  %  s         7 7 X7   / / / // / / / [Vc4[11[ FGG	+ 	+ 	+ HG 21	+ 	+ 	+rV   rK  c                     t          dg          } t          | t          j        t          j        |                                d S )Nr}  )r\   r)   r/  r1  r0  r  s    rT   "test_pickle_open_mfdataset_datasetr`  X  s=     
 	-	-BRfl2&6&67788888rV   )rI   r   )r  F)r  r
  r   r   rI   r  )r  r  r  r
  r   r   rI   r  r   )r  r   rI   r   )
__future__r   r  r  r   r|  os.pathrL   r/  rS  r  r  sysr  r  r  collections.abcr   r   ior   pathlibr   typingr   r	   r
   r   numpyrk   pandasrv  r   packaging.versionr   pandas.errorsr   xarrayr  r   r   r   r   r   r   r   r   r   xarray.backends.commonr   xarray.backends.h5netcdf_r   xarray.backends.netcdf3r   xarray.backends.netCDF4_r   r   xarray.backends.pydap_r   xarray.backends.scipy_r   xarray.coding.stringsr   r   xarray.coding.variablesr    xarray.conventionsr!   xarray.corer"   xarray.core.optionsr#   xarray.core.pycompatr$   xarray.testsr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r  r<   r=   r>   xarray.tests.test_datasetr?   r@   rA   r  r  ImportErrorrF   
dask.arrayrl   r`  r<  r  rB   rH  r|  rC   rD   r.  rc  default_valuer  xarray.backends.apirG   rH   rU   r\   rp   rx   r   r   r   r   r   r   r   r   r   r   r  r  countr  r  r   r  r  r,  rP  r   r  r\  ro  r:  r?  rK  r  rN  rQ  rU  r^  r`  rn  rv  r  r  r  r  r  r  r  fixturer  r  r  r  r  r  r  r  r  r  r  rF  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'  r1  r4  r6  r
  str_rI  rK  r`  r   rV   rT   <module>r     s   " " " " " "              				  



    $ $ $ $ $ $                         2 2 2 2 2 2 2 2 2 2 2 2          % % % % % % - - - - - -    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 2 1 1 1 1 1 ? ? ? ? ? ? 8 8 8 8 8 8        2 1 1 1 1 1 9 9 9 9 9 9 E E E E E E E E 8 8 8 8 8 8 9 9 9 9 9 9             + + + + + + + + + + + +                                                 2         
         	 	 	 	D		KKK 	 	 	D	  $$$$$$   GGG  10000000LL   III \W$
*V$$ BAAAAAAAA      2 2 2 2   	2 	2 	2 	21 1 1 1	2 	2 	2 	21 1 1 1	2 	2 	2 	21 1 1 1I I I I
       26 6 6 6 6 6 6 60`2 `2 `2 `2 `2 `2 `2 `2F\ \ \ \ \M \ \ \~       @ 9? 7<     DI    g% g% g% g% g%* g% g% g%T	 <) <) <) <) <)k <) <) <)~ 13 13 13 13 13 13 13 13h DEE'C 'C 'C 'C 'C_ 'C 'C FE  'CT M@ M@ M@ M@ M@} M@ M@ M@`             X   "	 	 	 	 	 	 	 	 $-FGG    
   HG $-FGG( ( ( ( (z ( ( HG( $-FGG    '?   HG      . . . . .M; . . .(     -   @ !7 !7 !7 !7 !7{ !7 !7 !7H     {   ( 
 
 
 
 
}k 
 
 
 E% E% E% E% E%M; E% E% E%P ABBmA mA mA mA mA{ mA mA CB  mA` (3 (3 (3 (3 (3 (3 (3  (3V =  =  =  =  = - =  =  = @ DEE"C "C "C "C "C. "C "C FE  "CJ HHHIII  JI 2w    4y!!!  "! e}%%%  &% ay!!!  "! 777888* * 98*$ $ $ ABB"/ "/ CB "/J + + +  + 7 7 7  70 Q Q Q Q Q Q Q  Qh xQ xQ xQ xQ xQ} xQ xQ   xQv PQQI+ I+ I+ I+ I+ I+ I+ RQ  I+X 	
 
 
 
 
i 
 
   	
2 / / / / /{ / /  /> HIIW0 W0 W0 W0 W0 W0 W0 JI W0tG G G G G G G GB	 	 	 	 	 	 	 	 W' W' W' W' W' W' W' W't 79 79 79 79 79 79 79 79t .5 .5 .5 .5 .5 .5 .5 .5b " " " " 0 0 0 0 0 0 0 0= = = %899: : : :9 :4 %899d|449 9 9 54 :9  98 ^44'9'9'9::: : : ;: 54  :6 %899: : : :9 :4 %899d|445 5 5 54 :9 5 %<=='9'9'9::5 5 5 ;: >= 5 Iw#788E E E 98E        , 
 
 
 
, DEE%C %C %C FE  %CP     ( vr2V}sBivB9O9OP = = =   
=0 vr2V}sBivB9O9OP  GHH= = = IH   =8+ + + / / / /4 ? ? ? ?: G G G G& c27^44* * * 54 *& .+ .+ .+ .+ .+ .+ .+  .+b 9 9  9 9 9sH   $D) )D10D15
E   EEE E! E!'
E2 2E<;E<