
    -Sh<                       d 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
mZ ddlmZ ddlmZmZmZ ddlmZmZ ddlmZmZ dd	lmZ dd
lmZ ddlZddlmc mZ ddlmZ  G d de          Z  G d de           Z! G d de           Z" G d de           Z# G d d          Z$ G d d          Z% G d de           Z& G d de           Z' G d de           Z( G d de           Z)ej*        +                    d e,dfej-        dfej.        dfe/d!fej0        d!fej1        d!f ej2        d"d#$          d%f ej2        d&d#$          d%f ej2        d"'          d%f ej2        d&'          d%f ej2                    d%fg          d(             Z3 G d) d*e           Z4 e
j5        d+ej6        j7        vd,           G d- d.e                       Z8 e
j5        d+ej6        j7        vd,           G d/ d0e                       Z9 e
j5        d1ej6        j7        vd2           G d3 d4e                       Z: e
j5        d5ej6        j7        vd6           G d7 d8e                       Z; e
j5        d9ej6        j7        vd:           G d; d<e                       Z< e
j5        d=ej6        j7        vd>           G d? d@e                       Z= e
j5        dAej6        j7        vdB           G dC dDe                       Z> G dE dFe           Z? G dG dHe           Z@ G dI dJe           ZA G dK dLe           ZB G dM dNe           ZC G dO dPe           ZD G dQ dRe           ZE G dS dTe           ZF G dU dVe           ZG G dW dXe           ZH G dY dZe           ZI G d[ d\e           ZJ G d] d^e           ZK G d_ d`e           ZL G da dbe           ZMej*        N                    ej        jO        dck    dde          ZP G df dge           ZQ G dh die           ZR G dj dke           ZS G dl dme           ZT G dn doe           ZUdp ZV e
jW        ej        jO        dqk    pej        jO        drk    oej        jO        dsk     dt          du             ZXdv ZYdw ZZdx Z[dy Z\dz Z]d{ Z^d| Z_d} Z` G d~ de           Za G d de           ZbddZcddZdej*        +                    dd ecfd ecfd ecfd edfgg d          Zeedk     rdndZfej*        +                    ddefg          eed                         Zgej*        h                    edk     de          eed                         Zieed             Zjeed             Zkeed             Zleed             ZmdS )z
    Dataset testing operations.

    Tests all dataset operations, including creation, with the exception of:

    1. Slicing operations for read and write, handled by module test_slicing
    2. Type conversion for read and write (currently untested)
    N   )utTestCase)get_data_file_path)FileGroupDataset)is_empty_dataspaceproduct)h5fh5t)H5pyDeprecationWarning)version)NUMPY_RELEASE_VERSIONc                       e Zd Zd Zd ZdS )BaseDatasetc                 T    t          |                                 d          | _        d S )Nw)r   mktempfselfs    ]/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/h5py/tests/test_dataset.pysetUpzBaseDataset.setUp'   s    dkkmmS))    c                 J    | j         r| j                                          d S d S N)r   closer   s    r   tearDownzBaseDataset.tearDown*   s)    6 	FLLNNNNN	 	r   N)__name__
__module____qualname__r   r    r   r   r   r   &   s2        * * *    r   r   c                   $    e Zd ZdZd Zd Zd ZdS )TestReprz5
        Feature: repr(Dataset) behaves sensibly
    c                 j    | j                             ddd          }t          |          dk    sJ d S )Nfoo   int32dtypez,<HDF5 dataset "foo": shape (4,), type "<i4">r   create_datasetreprr   dss     r   test_repr_basiczTestRepr.test_repr_basic4   s<    V""5$g">>BxxIIIIIIIr   c                     | j                             dd          }| j                                          t          |          dk    sJ dS )z( repr() works on live and dead datasets r'   r(   z<Closed HDF5 dataset>N)r   r.   r   r/   r0   s     r   test_repr_closedzTestRepr.test_repr_closed8   sF    V""5$//Bxx2222222r   c                 j    | j                             d dd          }t          |          dk    sJ d S )Nr(   r*   r+   z2<HDF5 dataset (anonymous): shape (4,), type "<i4">r-   r0   s     r   test_repr_anonymouszTestRepr.test_repr_anonymous>   s<    V""4W"==BxxOOOOOOOr   N)r    r!   r"   __doc__r2   r4   r6   r#   r   r   r%   r%   /   sS         J J J3 3 3P P P P Pr   r%   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Z ej         eed
           d          d             Zd ZdS )TestCreateShapez@
        Feature: Datasets can be created from a shape only
    c                 r    | j                             dd          }|                     |j        d           dS )z Create a scalar dataset r'   r#   Nr   r.   assertEqualshaper   dsets     r   test_create_scalarz"TestCreateShape.test_create_scalarI   s7    v$$UB//R(((((r   c                 r    | j                             dd          }|                     |j        d           dS )z Create a size-1 dataset r'   r   Nr;   r>   s     r   test_create_simplez"TestCreateShape.test_create_simpleN   s7    v$$UD11T*****r   c                 r    | j                             dd          }|                     |j        d           dS )z+ Create a size-1 dataset with integer shaper'   r   rB   Nr;   r>   s     r   test_create_integerz#TestCreateShape.test_create_integerS   s7    v$$UA..T*****r   c                 J   | j                             dd          }|                     |j        d           |                     |j        d           | j                             dd          }|                     |j        d           |                     |j        d           dS ) Create an extended dataset r'   ?   rI   bar   
   <   Nr   r.   r<   r=   sizer>   s     r   test_create_extendedz$TestCreateShape.test_create_extendedX   s    v$$UE22U+++B'''v$$UG44W---R)))))r   c                 J   | j                             dd          }|                     |j        d           |                     |j        d           | j                             dd          }|                     |j        d           |                     |j        d           dS )rG   r'   rI   rH   rJ   rK   rN   NrO   r>   s     r   test_create_integer_extendedz,TestCreateShape.test_create_integer_extendeda   s    v$$UB//U+++B'''v$$UG44W---R)))))r   c                     | j                             dd          }|                     |j        t	          j        d                     dS )) Confirm that the default dtype is float r'   rH   z=f4Nr   r.   r<   r,   npr>   s     r   test_default_dtypez"TestCreateShape.test_default_dtypej   s?    v$$UE22RXe__55555r   c                     |                      t                    5  | j                            d           ddd           dS # 1 swxY w Y   dS )z  Missing shape raises TypeError r'   NassertRaises	TypeErrorr   r.   r   s    r   test_missing_shapez"TestCreateShape.test_missing_shapeo   s    y)) 	) 	)F!!%(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   AA
Ac                    | j                             ddt          j                  }t	          j                    dv r(t          j        dt	          j                    z             |                     |j	        t          j                   dS )rU   r'   rH   r+   )ppc64lez(Storage of long double deactivated on %sN)
r   r.   rW   
longdoubleplatformmachinepytestxfailr<   r,   r>   s     r   test_long_doublez TestCreateShape.test_long_doublet   ss    v$$UE$GG,,LChFVFXFXXYYYR]33333r   
complex256zNo support for complex256c                     | j                             ddt          j        d                    }|                     |j        t          j        d                     dS )rU   r'   rH   rf   r+   N)r   r.   rW   r,   r<   r>   s     r   test_complex256zTestCreateShape.test_complex256{   s[     v$$UE+-8L+A+A % C CRXl%;%;<<<<<r   c                     | j                             dd          }|                     |j        d           | j                             dd          }|                     |j        d           d S )Ns   foorB   s   bar/baz   r;   r   r?   dset2s      r   test_name_byteszTestCreateShape.test_name_bytes   sf    v$$VT22T***%%j$77d+++++r   N)r    r!   r"   r7   r@   rC   rE   rQ   rS   rX   r]   re   r   skipIfhasattrrW   rh   rn   r#   r   r   r9   r9   C   s         ) ) )
+ + +
+ + +
* * ** * *6 6 6
) ) )
4 4 4 RY772|,,,.IJJ= = KJ=, , , , ,r   r9   c                   `    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )TestCreateDatazA
        Feature: Datasets can be created from existing data
    c                     t          j        dd          }| j                            d|          }|                     |j        |j                   dS )z- Create a scalar dataset from existing array r#   r   r'   dataNrW   onesr   r.   r<   r=   r   ru   r?   s      r   r@   z!TestCreateData.test_create_scalar   sM    wr3v$$U$66TZ00000r   c                     t          j        dd          }| j                            d|          }|                     |j        |j                   dS )z/ Create an extended dataset from existing data rH   r   r'   rt   Nrv   rx   s      r   rQ   z#TestCreateData.test_create_extended   sM    wuc""v$$U$66TZ00000r   c                     | j                             ddd          }|                     |t          j                   |                     d| j         v            dS )z1 Create dataset with missing intermediate groups z/foo/bar/bazrM   rM   z<i4)r=   r,   N)r   r.   assertIsInstanceh5pyr	   
assertTruer0   s     r   test_dataset_intermediate_groupz.TestCreateData.test_dataset_intermediate_group   sU    V"">"OOb$,///$&011111r   c                     t          j        dd          }| j                            dd|          }|                     |j        d           |                     |d         |                    d                     dS )	z8 Create from existing data, and make it fit a new shape    r   r+   r'   rM      r=   ru   .N)rW   aranger   r.   r<   r=   assertArrayEqualreshaperx   s      r   test_reshapezTestCreateData.test_reshape   sv    y3'''v$$U'$EEW---d3ig)>)>?????r   c                     |                      t                    5  t          | j        d         j                   ddd           dS # 1 swxY w Y   dS )zE Binding Dataset to a non-DatasetID identifier fails with ValueError /N)r[   
ValueErrorr	   r   idr   s    r   test_appropriate_low_level_idz,TestCreateData.test_appropriate_low_level_id   s    z** 	$ 	$DF3KN###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s    AAAc                 8   |j                                         }t          |t          j                  sJ |                                |k    sJ ||                                sJ d S |                                rJ |                                |k    sJ d S r   )r   get_type
isinstancer   TypeStringIDget_csetis_variable_strget_size)r   r?   csetlengthtids        r   check_h5_stringzTestCreateData.check_h5_string   s    g  #s/00000||~~%%%%>&&(((((((**,,,,,<<>>V++++++r   c           	      |     fd} | j                             dd                      | j                             dddg                      | j                             ddgdgg                      | j                             dt          j        ddgt          	                               d
S )z= Creating dataset with byte string yields vlen ASCII dataset c                 L                         | t          j        d            d S Nr   )r   r   
CSET_ASCIIr?   r   s    r   check_vlen_asciiz?TestCreateData.test_create_bytestring.<locals>.check_vlen_ascii   s&      s~d CCCCCr   a   abcrt   b   defcdr+   Nr   r.   rW   arrayobject)r   r   s   ` r   test_create_bytestringz%TestCreateData.test_create_bytestring   s    	D 	D 	D 	D 	D..s.@@AAA..s&&9I.JJKKK..s6(VH9M.NNOOO..bh/v>>> / 
 
 	 	 	 	 	r   c                     | j                             dt          j        ddgd                    }|                     |t
          j        d           d S )	Nr   r   r   S3r+   rt   r   r   )r   r.   rW   r   r   r   r   r>   s     r   test_create_np_szTestCreateData.test_create_np_s   sT    v$$Srx8HPT/U/U/U$VVT3>!<<<<<r   c           	      |     fd} | j                             dd                      | j                             dddg                      | j                             ddgdgg                      | j                             dt          j        ddgt          	                               d S )
Nc                 L                         | t          j        d            d S r   )r   r   	CSET_UTF8r   s    r   check_vlen_utf8z;TestCreateData.test_create_strings.<locals>.check_vlen_utf8   s&      s}T BBBBBr   r   abcrt   r   defr   r   r+   r   )r   r   s   ` r   test_create_stringsz"TestCreateData.test_create_strings   s    	C 	C 	C 	C 	C--c->>???--c-GGHHH--c%5'8J-KKLLL--bhu~V<<< . 
 
 	 	 	 	 	r   c                     |                      t                    5  | j                            dt	          j        ddgd                     d d d            d S # 1 swxY w Y   d S )Nr   r   r   U3r+   rt   )r[   r\   r   r.   rW   r   r   s    r   test_create_np_uzTestCreateData.test_create_np_u   s    y)) 	T 	TF!!#BHff5ET,R,R,R!SSS	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	Ts   3AA"Ac                     | j                             dd           |                     t          | j         d         j                             d S )Nr'   r   r+   )r   r.   r~   r
   r   r   s    r    test_empty_create_via_None_shapez/TestCreateData.test_empty_create_via_None_shape   sG    e3///*46%=+;<<=====r   c                     | j                             dt          j        d                     |                     t          | j         d         j                             d S )Nr'   r   r+   rt   )r   r.   r}   Emptyr~   r
   r   r   s    r   !test_empty_create_via_Empty_classz0TestCreateData.test_empty_create_via_Empty_class   sT    e$*3*?*?*?@@@*46%=+;<<=====r   c                     |                      t                    5  | j                            ddt	          j        d                     d d d            d S # 1 swxY w Y   d S )NrJ   r)   r   r   )r[   r   r   r.   rW   r   r   s    r   test_create_incompatible_dataz,TestCreateData.test_create_incompatible_data   s    z** 	F 	FF!!%q	!!EEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   0AAAN)r    r!   r"   r7   r@   rQ   r   r   r   r   r   r   r   r   r   r   r   r#   r   r   rr   rr      s         1 1 11 1 12 2 2@ @ @$ $ $
, , ,	 	 	= = =  T T T> > >> > >F F F F Fr   rr   c                      e Zd ZdZej                            dddej        dd         ej        dd         fddej        dd         ej        d	d
         fddej        d
dd
d
f         ej        d
d
d
df         fddej        dd
ddf         ej        d
d
         fg          d             Z	d Z
d Zd Zd Zd Zd
S )TestReadDirectlyzI
        Feature: Read data directly from Dataset into a Numpy array
    +source_shape,dest_shape,source_sel,dest_seld   r   rM   2   rN   F   Z   Nr   rM      r   r         	   rL   rk   rL   r   c                 |   t          j        t          |          d                              |          }|                    d||          }t          j        |dd          }|                                }	||         |	|<   |                    |||           t           j        	                    ||	           d S )Nint64r+   r?   rt   )
rW   r   r   r   r.   fullcopyread_directtestingassert_array_equal)
r   writable_filesource_shape
dest_shape
source_seldest_selsource_valuesr?   arrexpecteds
             r   test_read_directz!TestReadDirectly.test_read_direct   s     	',"7"7wGGGOOP\]]++FL}+UUgj"G44488::*:6j(333

%%c844444r   c                    |                     ddt          j        dd                    }t          j        dd          }|                    |           t          j                            |t          j        dd                     d S )Nr?   rM   rM   r   r+   rt   )r.   rW   r   rw   r   r   r   r   r   r?   r   s       r   test_no_selzTestReadDirectly.test_no_sel   s    ++FE	"T[@\@\@\+]]ge7+++

%%c29Rw+G+G+GHHHHHr   c                 8   |                     dd          }t          j        dd          }t          j        t
                    5  |                    |t          j        dd         t          j        dd                    d d d            d S # 1 swxY w Y   d S 	Nedsetr   r+   r   r   rM   r   rN   )r.   rW   rw   rc   raisesr\   r   s_)r   r   
empty_dsetr   s       r   
test_emptyzTestReadDirectly.test_empty   s    "11'1II
gfg&&]9%% 	C 	C""3adRU2b5\BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   <BBBc                     |                     ddd          }t          j        d          }t          j        t
                    5  |                    |           d d d            d S # 1 swxY w Y   d S Nr?   r   r   r+      r.   rW   rw   rc   r   r\   r   r   s       r   test_wrong_shapez!TestReadDirectly.test_wrong_shape  s    ++FF'+JJgfoo]9%% 	" 	"S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"   A))A-0A-c                     |                     ddd          }t          j        dd          }t          j        t
                    5  |                    |           d d d            d S # 1 swxY w Y   d S Nr?   r{   r   r+   F)orderr   r   s       r   test_not_c_contiguousz&TestReadDirectly.test_not_c_contiguous  s    ++FHG+LLghc***]9%% 	" 	"S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"   A++A/2A/c                    d}|                     d|t          j                  }t          j        |t          j                  }|                    |           t          j        dt          j                  }t          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )N)r   r   r?   r+   )r      )r.   rW   r   zerosr   rc   r   r\   )r   r   r=   r?   r   arr2s         r   test_zero_lengthz!TestReadDirectly.test_zero_length  s    ++FE+JJhuBH--- xrx000]9%% 	# 	#T"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   B66B:=B:)r    r!   r"   r7   rc   markparametrizerW   r   r   r   r   r   r   r   r#   r   r   r   r      s=         [5VRU1R4["%2,7FBE"R%L"%*5xssAAAvaaa"f>beArr1HoruQQQx8		
 5 5 5I I IC C C" " "" " "	# 	# 	# 	# 	#r   r   c                   z   e Zd ZdZej                            dddej        dd         ej        dd         fddej        dd         ej        d	d
         fddej        d
dd
d
f         ej        d
d
d
df         fddej        dd
ddf         ej        d
d
         fg          d             Z	d Z
d Zd Zd
S )TestWriteDirectlyz>
        Feature: Write Numpy array directly into Dataset
    r   r   r   rM   r   rN   r   r   Nr   r   r   r   r   rk   rL   r   c                 b   |                     d|dd          }t          j        t          |                                        |          }t          j        |dd          }||         ||<   |                    |||           t          j                            |d d          |           d S )Nr?   r*   r   r,   	fillvaluer+   )	r.   rW   r   r   r   r   write_directr   r   )	r   r   r   r   r   r   r?   r   r   s	            r   test_write_directz#TestWriteDirectly.test_write_direct$  s     ++FJgY[+\\i--..66|DD7:r999 _#z8444

%%d111gx88888r   c                 2   |                     dd          }t          j        t                    5  |                    t          j        d          t
          j        dd         t
          j        dd                    d d d            d S # 1 swxY w Y   d S r   )r.   rc   r   r\   r  rW   rw   r   )r   r   r   s      r   r   zTestWriteDirectly.test_empty4  s    "11'1II
]9%% 	P 	P##BGFOORU1R4["%2,OOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   ABBBc                     |                     ddd          }t          j        d          }t          j        t
                    5  |                    |           d d d            d S # 1 swxY w Y   d S r   r.   rW   rw   rc   r   r\   r  r   s       r   r   z"TestWriteDirectly.test_wrong_shape9  s    ++FF'+JJgfoo]9%% 	# 	#c"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#r   c                     |                     ddd          }t          j        dd          }t          j        t
                    5  |                    |           d d d            d S # 1 swxY w Y   d S r   r  r   s       r   r   z'TestWriteDirectly.test_not_c_contiguous?  s    ++FHG+LLghc***]9%% 	# 	#c"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#r   )r    r!   r"   r7   rc   r   r   rW   r   r  r   r   r   r#   r   r   r   r     s         [5VRU1R4["%2,7FBE"R%L"%*5xssAAAvaaa"f>beArr1HoruQQQx8		
 9 9 9P P P
# # ## # # # #r   r   c                   B    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestCreateRequirezS
        Feature: Datasets can be created only if they don't exist in the file
    c                     | j                             ddd          }|                     |t                     |                     |j        d           dS )z& Create new dataset with no conflicts r'   r   r   N)r   require_datasetr|   r	   r<   r=   r>   s     r   test_createzTestCreateRequire.test_createL  sO    v%%eWc::dG,,,W-----r   c                     | j                             ddd          }| j                             ddd          }|                     ||           dS )z) require_dataset yields existing dataset r'   r   r   Nr   r  r<   rl   s      r   test_create_existingz&TestCreateRequire.test_create_existingR  sP    v%%eWc::&&ugs;;u%%%%%r   c                    | j                             ddd          }| j                             ddd          }|                     ||           | j                             ddd          }| j                             ddd          }|                     ||           | j                             ddd          }| j                             ddd          }|                     ||           dS )	z; require_dataset with integer shape yields existing datasetr'   rM   r   rJ   r   bazs   bazNr  rl   s      r   test_create_1Dz TestCreateRequire.test_create_1DX  s    v%%eR55&&ub#66u%%%v%%eUC88&&ub#66u%%%v%%eR55&&vuc::u%%%%%r   c                     | j                             ddd           |                     t                    5  | j                             ddd           ddd           dS # 1 swxY w Y   dS )z6 require_dataset with shape conflict yields TypeError r'   r   r   )rM   r)   Nr   r.   r[   r\   r  r   s    r   test_shape_conflictz%TestCreateRequire.test_shape_conflictf  s    eWc222y)) 	8 	8F""5'3777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8   A!!A%(A%c                     | j                             d           |                     t                    5  | j                             ddd           ddd           dS # 1 swxY w Y   dS )z< require_dataset with object type conflict yields TypeError r'   r   r   N)r   create_groupr[   r\   r  r   s    r   test_type_conflictz$TestCreateRequire.test_type_conflictl  s    E"""y)) 	8 	8F""5'3777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   AA#&A#c                     | j                             ddd          }|                     t                    5  | j                             ddd           ddd           dS # 1 swxY w Y   dS )zL require_dataset with dtype conflict (strict mode) yields TypeError
        r'   r   r   S10Nr  r>   s     r   test_dtype_conflictz%TestCreateRequire.test_dtype_conflictr  s     v$$UGS99y)) 	: 	:F""5'5999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:r  c                     | j                             ddd          }| j                             dddd          }|                     ||           dS )z* require_dataset with exactly dtype match r'   r   r   TexactN)r   r.   r  r<   rl   s      r   test_dtype_exactz"TestCreateRequire.test_dtype_exacty  sW     v$$UGS99&&ugs$&GGu%%%%%r   c                     | j                             ddd          }| j                             dddd          }|                     ||           |                     |j        t          j        d                     dS )zJ require_dataset with convertible type succeeds (non-strict mode)
        r'   r   i4i2Fr   N)r   r.   r  r<   r,   rW   rl   s      r   test_dtype_closez"TestCreateRequire.test_dtype_close  sw     v$$UGT::&&ugt5&IIu%%%bhtnn55555r   N)r    r!   r"   r7   r  r  r  r  r  r  r"  r&  r#   r   r   r  r  F  s         . . .& & && & &8 8 88 8 8: : :& & &6 6 6 6 6r   r  c                   H    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TestCreateChunkedzL
        Feature: Datasets can be created by manually specifying chunks
    c                 v    | j                             ddd          }|                     |j        d           dS )z Create via chunks tuple r'   r   r   r=   chunksNr   r.   r<   r+  r>   s     r   test_create_chunksz$TestCreateChunked.test_create_chunks  s<    v$$U&$GGe,,,,,r   c                 v    | j                             ddd          }|                     |j        d           dS )z Create via chunks integer r'   r   rM   r*  r   Nr,  r>   s     r   test_create_chunks_integerz,TestCreateChunked.test_create_chunks_integer  s<    v$$U&$DDe,,,,,r   c                     |                      t                    5  | j                            ddd           ddd           dS # 1 swxY w Y   dS )z& Illegal chunk size raises ValueError r'   r   r   r*  Nr[   r   r   r.   r   s    r   test_chunks_mismatchz&TestCreateChunked.test_chunks_mismatch  s    z** 	F 	FF!!%vf!EEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F   AA
A
c                     |                      t                    5  | j                            dddd           ddd           dS # 1 swxY w Y   dS )z3 Chunked format required for given storage options r'   r   r   F)r=   maxshaper+  Nr1  r   s    r   test_chunks_falsez#TestCreateChunked.test_chunks_false  s    z** 	R 	RF!!%us5!QQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R   AAAc                     |                      t                    5  | j                            ddd           ddd           dS # 1 swxY w Y   dS )z> Attempting to create chunked scalar dataset raises TypeError r'   r#   r   r*  NrZ   r   s    r   test_chunks_scalarz$TestCreateChunked.test_chunks_scalar  s    y)) 	A 	AF!!%r%!@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	Ar3  c                     | j                             ddd          }|                     |j        t                     |                     t          |j                  d           dS )z Auto-chunking of datasets r'   )r   r   Tr*  rk   N)r   r.   r|   r+  tupler<   lenr>   s     r   test_auto_chunksz"TestCreateChunked.test_auto_chunks  s\    v$$U)D$IIdk5111T[))1-----r   c                 x    | j                             dddd          }|                     |j        d           dS )z7 Auto-chunking with pathologically large element sizes r'   r   
S100000000Tr=   r,   r+  rB   Nr,  r>   s     r   test_auto_chunks_abusez(TestCreateChunked.test_auto_chunks_abuse  s?    v$$U$lSW$XXd+++++r   c                    | j                             ddt          j        d          }d|ddddf<   |                     t          j        |ddddf         dk                         d	|d<   |                     t          j        |d         d	k                         d
|dd<   |                     t          j        |dd         d
k                         dS )z+ Test scalar assignment of chunked dataset r'   )r   r   r   )r   r   r   rB  rM   r   N(         r   rk   )r   r.   rW   r*   r~   allr>   s     r   test_scalar_assignmentz(TestCreateChunked.test_scalar_assignment  s    v$$U++-8K % I I Q2XtAqqq"H~344555 QtAw"}--... QqS	tAaCyB//00000r   c                 H   t          j        t          d          5 }| j                            ddd           ddd           n# 1 swxY w Y   t          j        t          d          5 }| j                            ddd	           ddd           dS # 1 swxY w Y   dS )
z, Auto-chunking of empty datasets not allowedr   matchr'   S100T)r,   r+  Nr   r,   r5  )rc   r   r\   r   r.   )r   errs     r   test_auto_chunks_no_shapez+TestCreateChunked.test_auto_chunks_no_shape  s>   ]9G444 	DF!!%vd!CCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D ]9G444 	DF!!%v!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
,BBBN)r    r!   r"   r7   r-  r/  r2  r6  r:  r>  rC  rI  rP  r#   r   r   r(  r(    s         - - -
- - -
F F F
R R R
A A A
. . ., , ,
1 1 1 D D D D Dr   r(  c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )TestCreateFillvaluez>
        Feature: Datasets can be created with fill value
    c                     | j                             ddd          }|                     |d         d           |                     |d         d           dS )z- Fill value is reflected in dataset contents r'   r         @r  r   r   N)r   r.   r<   r>   s     r   test_create_fillvalz'TestCreateFillvalue.test_create_fillval  sX    v$$UES$AAa#&&&a#&&&&&r   c                     | j                             ddd          }|                     |j        d           |                     |j        t
          j                   dS )z( Fill value is recoverable via property r'   r   g      @rU  N)r   r.   r<   r  assertNotIsInstancerW   ndarrayr>   s     r   test_propertyz!TestCreateFillvalue.test_property  sV    v$$UES$AA---  <<<<<r   c                 r    | j                             dd          }|                     |j        d           dS )z0 .fillvalue property works correctly if not set r'   r   r   N)r   r.   r<   r  r>   s     r   test_property_nonez&TestCreateFillvalue.test_property_none  s7    v$$UE22+++++r   c                    t          j        ddg          }t          j        d|          d         }| j                            dd||          }|                     |j        |           |                     |d	         |           d
S )z& Fill value works with compound types )r   f4)r   i8rB   r+   r   r'   r   r  r)   N)rW   r,   rw   r   r.   r<   r  assertAlmostEqual)r   dtvr?   s       r   test_compoundz!TestCreateFillvalue.test_compound  s    X{K011GD###A&v$$UEq$II+++tAw*****r   c                     |                      t                    5  | j                            ddddgd          }ddd           dS # 1 swxY w Y   dS )z$ Bogus fill value raises ValueError r'   r   r   i)r   r   *   r  Nr1  r>   s     r   test_exczTestCreateFillvalue.test_exc  s    z** 	B 	B6((%z2b ) B BD	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   !A		AAN)	r    r!   r"   r7   rV  rZ  r\  rc  rh  r#   r   r   rR  rR    sn         ' ' '= = =, , ,
+ + +B B B B Br   rR  c                       e Zd ZdZd Z ej        dej        j	        vd          d             Z
d Zd Zd Zd	 Zd
 Zd Zd ZdS )TestFillTimezI
        Feature: Datasets created with specified fill time property
    c                 P   | j                             ddd          }|j                                        }|                     |                                t          j        j                   |                     |d         d           |                     |d         d           dS )z Fill time default to IFSET r'   r   rT  rU  r   r   N	r   r.   r   get_create_plistr<   get_fill_timer}   h5dFILL_TIME_IFSETr   r?   plists      r   test_fill_time_defaultz#TestFillTime.test_fill_time_default  s    v$$UES$AA((**,,..0HIIIa#&&&a#&&&&&r   gzipDEFLATE is not installedc                 R   | j                             dddd          }|j                                        }|                     |                                t          j        j                   |                     |d         d           |                     |d         d           dS )	z5 Fill time is IFSET for compressed dataset (chunked) r'   r   rt  rT  )compressionr  r   r   Nrl  rq  s      r   test_compressed_defaultz$TestFillTime.test_compressed_default   s     v$$UEv/2 % 4 4((**,,..0HIIIa#&&&a#&&&&&r   c                 R   | j                             dddd          }|j                                        }|                     |                                t          j        j                   | 	                    |d         d           | 	                    |d         d           dS )	z Fill time set to NEVER r'   r   rT  neverr  	fill_timer   r   N)
r   r.   r   rm  r<   rn  r}   ro  FILL_TIME_NEVERassertNotEqualrq  s      r   test_fill_time_neverz!TestFillTime.test_fill_time_never
  s    v$$UES/6 % 8 8((**,,..0HIIIDGS)))DGS)))))r   c                     | j                             dddd          }|j                                        }|                     |                                t          j        j                   dS )z# Fill time explicitly set to ALLOC r'   r   rT  allocr{  N)	r   r.   r   rm  r<   rn  r}   ro  FILL_TIME_ALLOCrq  s      r   test_fill_time_allocz!TestFillTime.test_fill_time_alloc  sg    v$$UES/6 % 8 8((**,,..0HIIIIIr   c                     | j                             ddddd          }|j                                        }|                     |                                t          j        j                   dS )z# Fill time explicitly set to IFSET r'   r   rj   rT  ifset)r+  r  r|  Nrl  rq  s      r   test_fill_time_ifsetz!TestFillTime.test_fill_time_ifset  si    v$$UE$#/6 % 8 8((**,,..0HIIIIIr   c                     |                      t                    5  | j                            ddd          }ddd           dS # 1 swxY w Y   dS )z2 Choice of fill_time is 'alloc', 'never', 'ifset' r'   r   fill_badr|  Nr1  r>   s     r   test_invalid_fill_timez#TestFillTime.test_invalid_fill_time"  s    z** 	M 	M6(((LLD	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Mr3  c                     |                      t                    5  | j                            ddd          }ddd           dS # 1 swxY w Y   dS )z fill_time must be a string r'   r   rk   r  Nr1  r>   s     r   test_non_str_fill_timez#TestFillTime.test_non_str_fill_time'  s    z** 	D 	D6(((CCD	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Dr3  c                    | j                             dddd          }|j                                        }|                     |                                t          j        j                   t          j
        |dd         d                                          sJ |                    d           t          j
        |dd         d                                          sJ dS )z= The resize dataset will be filled (by default fill value 0) r'   r9  r   r   )r5  r+  N        )r   r.   r   rm  r<   rn  r}   ro  rp  rW   iscloserH  resizerq  s      r   #test_resize_chunk_fill_time_defaultz0TestFillTime.test_resize_chunk_fill_time_default,  s    v$$UFW,1 % 3 3((**,,..0HIIIz$qqq'3''++-----Gz$qqq'3''++-------r   c                    | j                             dddddd          }|j                                        }|                     |                                t          j        j                   t          j
        |dd         d                                          rJ |                    d           t          j
        |dd         d                                          rJ dS )	z$ The resize dataset won't be filled r'   r9  r   rT  rz  r  )r5  r  r|  r+  N)r   r.   r   rm  r<   rn  r}   ro  r}  rW   r  anyr  rq  s      r   !test_resize_chunk_fill_time_neverz.TestFillTime.test_resize_chunk_fill_time_never8  s    v$$UFW/2g,1 % 3 3 ((**,,..0HIII:d111gs++//11111G:d111gs++//1111111r   N)r    r!   r"   r7   rs  r   ro   r}   filtersencoderx  r  r  r  r  r  r  r  r#   r   r   rj  rj    s         ' ' ' RYvT\002LMM' ' NM'* * *J J JJ J JM M M
D D D

. 
. 
.2 2 2 2 2r   rj  zdt,expectedr  utf-8r   encodingr   r   asciir  c                 P    |                     dd|           }|j        |k    sJ d S )Nr'   r   r+   )r.   r  )ra  r   r   r?   s       r   test_get_unset_fill_valuer  F  s7     ''uB'??D>X%%%%%%r   c                       e Zd ZdZd ZdS )TestCreateNamedTypezC
        Feature: Datasets created from an existing named type
    c                    t          j        d          | j        d<   | j                            dd| j        d                   }|                     |j        t          j        d                     |                     |j                                        | j        d         j                   |                     |j                                                                                   dS )z7 Named type object works and links the dataset to type f8typexr   r+   N)	rW   r,   r   r.   r<   r   r   r~   	committedr>   s     r   
test_namedzTestCreateNamedType.test_named_  s    $vv$$S&v$GGRXd^^444))++TVF^->???((**446677777r   N)r    r!   r"   r7   r  r#   r   r   r  r  Y  s-         8 8 8 8 8r   r  rt  ru  c                   *    e Zd ZdZd Zd Zd Zd ZdS )TestCreateGzipz=
        Feature: Datasets created with gzip compression
    c                     | j                             dddd          }|                     |j        d           |                     |j        d           dS )z# Create with explicit gzip options r'   r   r   rt  r   rw  compression_optsNr   r.   r<   rw  r  r>   s     r   	test_gzipzTestCreateGzip.test_gzipo  s_    v$$UH&67 % 9 9)6222.22222r   c                     | j                             ddd          }|                     |j        d           |                     |j        d           dS )z+ Create with implicit gzip level (level 4) r'   r  rt  rw  r)   Nr  r>   s     r   test_gzip_implicitz!TestCreateGzip.test_gzip_implicitv  sV    v$$UH&$II)6222.22222r   c                    | j                             ddd          }|                     |j        d           |                     |j        d           t
          j        j        j        }	 t                      t
          j        j        _        | 
                    t                    5  | j                             ddd          }ddd           n# 1 swxY w Y   |t
          j        j        _        dS # |t
          j        j        _        w xY w)z. Create with gzip level by specifying integer r'   r  r   r  rt  N)r   r.   r<   rw  r  r}   _hldataset_LEGACY_GZIP_COMPRESSION_VALSr<  r[   r   )r   r?   original_compression_valss      r   test_gzip_numberzTestCreateGzip.test_gzip_number|  s;   v$$UH!$DD)6222.222$(H$4$R!	W=BWWDH:"":.. M Mv,,UH!,LLM M M M M M M M M M M M M M M >WDH:::=VDH:VVVVs0   +<C4 'CC4 CC4 CC4 4Dc                    |                      t          t          f          5  | j                            ddd           ddd           n# 1 swxY w Y   |                      t                    5  | j                            ddd           ddd           n# 1 swxY w Y   |                      t                    5  | j                            dddd           ddd           dS # 1 swxY w Y   dS )	z= Illegal gzip level (explicit or implicit) raises ValueError r'   r     r  Nrt  r  )r[   r   RuntimeErrorr   r.   r   s    r   test_gzip_exczTestCreateGzip.test_gzip_exc  s   
L9:: 	C 	CF!!%r!BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cz** 	C 	CF!!%r!BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cz** 	7 	7F!!%v35 " 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s5   AAA1BB"B C,,C03C0N)r    r!   r"   r7   r  r  r  r  r#   r   r   r  r  h  s]         3 3 33 3 3W W W7 7 7 7 7r   r  c                       e Zd ZdZd Zd ZdS )TestCreateCompressionNumberz?
        Feature: Datasets created with a compression code
    c                    t           j        j        j        }	 t	                      t           j        j        _        | j                            ddt           j        j        d          }|t           j        j        _        n# |t           j        j        _        w xY w| 	                    |j
        d           | 	                    |j        d           dS )z^ Create with compression number of gzip (h5py.h5z.FILTER_DEFLATE) and a compression level of 7r'   r  )r   r  rt  r   N)r}   r  r  r  r<  r   r.   h5zFILTER_DEFLATEr<   rw  r  )r   r  r?   s      r   test_compression_numberz3TestCreateCompressionNumber.test_compression_number  s    $(H$4$R!	W=BWWDH:6((dhF]pt(uuD=VDH::=VDH:VVVV)6222.22222s   AA> >Bc                 r   |                      t                    5 }| j                            ddd           ddd           n# 1 swxY w Y   |                     dt          |j                             |                      t                    5 }| j                            ddd           ddd           n# 1 swxY w Y   |                     dt          |j                             t          j        j	        j
        }	 t                      t          j        j	        _
        |                      t                    5  | j                            ddt          j        j                   ddd           n# 1 swxY w Y   |t          j        j	        _
        dS # |t          j        j	        _
        w xY w)	z* Create with invalid compression numbers  r'   r  ir  NzInvalid filterr   zUnknown compression)r[   r   r   r.   assertInstr	exceptionr}   r  r  r  r<  
IndexErrorr  r  )r   er  s      r   test_compression_number_invalidz;TestCreateCompressionNumber.test_compression_number_invalid  sY   z** 	EaF!!%t!DDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E&AK(8(8999z** 	DaF!!%s!CCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D+S-=-=>>>$(H$4$R!	W=BWWDH: "":.. \ \%%eX48CZ%[[[\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >WDH:::=VDH:VVVVsS   AA	A	B<<C C <F -E;/F ;E??F E?F F6N)r    r!   r"   r7   r  r  r#   r   r   r  r    sA         
3 
3 
3W W W W Wr   r  lzfzLZF is not installedc                       e Zd ZdZd Zd ZdS )TestCreateLZF<
        Feature: Datasets created with LZF compression
    c                    | j                             ddd          }|                     |j        d           |                     |j        d           t          j        d          }| j                             d|d          }|                     |j        d           |                     |j        d           | j                                          | j         d         d	         }|                     ||           dS )
z Create with explicit lzf r'   r  r  r  Nr   rJ   )ru   rw  r#   )	r   r.   r<   rw  r  rW   r   flushr   )r   r?   testdatareaddatas       r   test_lzfzTestCreateLZF.test_lzf  s    v$$UH%$HH)5111.5559S>>v$$Uu$MM)5111.5556%=$h11111r   c                     |                      t                    5  | j                            dddd           ddd           dS # 1 swxY w Y   dS )z& Giving lzf options raises ValueError r'   r  r  r)   r  Nr1  r   s    r   test_lzf_exczTestCreateLZF.test_lzf_exc  s    z** 	6 	6F!!%u34 " 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6r7  N)r    r!   r"   r7   r  r  r#   r   r   r  r    s<         2 2 2 6 6 6 6 6r   r  szipzSZIP is not installedc                       e Zd ZdZd ZdS )TestCreateSZIPr  c                 B    | j                             dddd          }dS )z Create with explicit szip r'   r  r  )ec   r  N)r   r.   r>   s     r   	test_szipzTestCreateSZIP.test_szip  s-    v$$UH&6@ % B Br   N)r    r!   r"   r7   r  r#   r   r   r  r    s2         B B B B Br   r  shufflezSHUFFLE is not installedc                       e Zd ZdZd ZdS )TestCreateShufflez8
        Feature: Datasets can use shuffling filter
    c                 t    | j                             ddd          }|                     |j                   dS )z Enable shuffle filter r'   r  T)r  N)r   r.   r~   r  r>   s     r   test_shufflezTestCreateShuffle.test_shuffle  s8    v$$UHd$CC%%%%%r   N)r    r!   r"   r7   r  r#   r   r   r  r    s-         & & & & &r   r  
fletcher32zFLETCHER32 is not installedc                       e Zd ZdZd ZdS )TestCreateFletcher32z=
        Feature: Datasets can use the fletcher32 filter
    c                 t    | j                             ddd          }|                     |j                   dS )z Enable fletcher32 filter r'   r  T)r  N)r   r.   r~   r  r>   s     r   test_fletcher32z$TestCreateFletcher32.test_fletcher32  s8    v$$UH$FF(((((r   N)r    r!   r"   r7   r  r#   r   r   r  r    s-         ) ) ) ) )r   r  scaleoffsetzSCALEOFFSET is not installedc                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestCreateScaleOffsetz?
        Feature: Datasets can use the scale/offset filter
    c                     |                      t                    5  | j                            ddt          d          }ddd           dS # 1 swxY w Y   dS )z[ Ensure that a scale factor is required for scaleoffset compression of floating point data r'   r  Tr,   r  Nr[   r   r   r.   floatr>   s     r    test_float_fails_without_optionsz6TestCreateScaleOffset.test_float_fails_without_options       z** 	Y 	Y6((SW(XXD	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y   $AAAc                     |                      t                    5  | j                            ddt          d          }ddd           dS # 1 swxY w Y   dS )z# Check when scaleoffset is negetiver'   r  gr  Nr  r>   s     r   test_non_integerz&TestCreateScaleOffset.test_non_integer  r  r  c                     |                      t                    5  | j                            ddt          d          }ddd           dS # 1 swxY w Y   dS )z% Check when dtype is unsupported typer'   r  Tr  N)r[   r\   r   r.   boolr>   s     r   test_unsupport_dtypez*TestCreateScaleOffset.test_unsupport_dtype  s     y)) 	X 	X6((RV(WWD	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	Xr  c                    d}d}dd|z  z  }t          j        j        | dz
  |z  }| j                            d|t           j        |          }|j        J ||d	<   | j        j        }| j                                         t          j
        |d
          | _        | j        d         d	         }|                     ||d| z             ||k                                    rJ dS )z2 Scaleoffset filter works for floating point data r)   r   i,  r   rM   g      ?r'   r  N.r)	precision)rW   randomrandr   r.   float64r  filenamer   r}   r   r   rH  )r   scalefacr=   ranger  r?   r  r  s           r   
test_floatz TestCreateScaleOffset.test_float  s     R8^#INE*S0E9v$$UEQY$ZZ +++ S	6?8S))6%=% 	hBH9<MNNN (--///////r   c                    d}d}t           j                            dd|z  dz
  |t           j                  }| j                            d|t           j        d	          }|j        J ||d<   | j        j        }| j                                         t          j
        |d          | _        | j        d         d         }|                     ||           d
S )zB Scaleoffset filter works for integer data with default precision rG  r  r   rk   r   rP   r,   r'   Tr  N.r  )rW   r  randintr   r   r.   r  r  r   r}   r   r   r   nbitsr=   r  r?   r  r  s          r   test_intzTestCreateScaleOffset.test_int3  s     9$$QU
QU"($SS v$$UEt$TT +++ S	6?8S))6%=%h11111r   c                    d}d}t           j                            dd|z  |t           j                  }| j                            d|t           j        |          }|                     |j        dk               ||d<   | j        j        }| j        	                                 t          j        |d	          | _        | j        d         d         }|                     ||           d
S )D Scaleoffset filter works for integer data with specified precision rG  r  r   rk   r  r'   r  .r  N)rW   r  r  r   r   r.   r~   r  r  r   r}   r   r   r  s          r   test_int_with_minbitsz+TestCreateScaleOffset.test_int_with_minbitsH  s     9$$QU
bh$OOv$$UEu$UU 	(B./// S	6?8S))6%=%h11111r   c                    d}d}t           j                            dd|dz   z  dz
  |t           j                  }| j                            d|t           j        |          }|                     |j        dk               ||d	<   | j        j        }| j        	                                 t          j        |d
          | _        | j        d         d	         }||k                                    rJ dS )r  rG  r  r   rk   r   r  r'   r  .r  N)rW   r  r  r   r   r.   r~   r  r  r   r}   r   rH  r  s          r   test_int_with_minbits_lossyz1TestCreateScaleOffset.test_int_with_minbits_lossy\  s     9$$Qeai(81(<5PRPX$YYv$$UEu$UU 	(B./// S	6?8S))6%=% (--///////r   N)r    r!   r"   r7   r  r  r  r  r  r  r
  r#   r   r   r  r    s         Y Y YY Y YX X X0 0 042 2 2*2 2 2(0 0 0 0 0r   r  c                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestExternalzB
        Feature: Datasets with the external storage property
    c                    d}t           j                            |          }|                                 }|dt          j        fg}| j                            d||j        |d          }||d<   |j        J t          |d          5 }|
                                }ddd           n# 1 swxY w Y   ||                                k    sJ t          j        |j                                                                                                                                                  }t          j        | j        j                  j                                        }	||	k    sJ dS )	z' Create and access an external dataset rL   r   r   r'   z	${ORIGIN}r,   externalefile_prefix.Nrb)rW   r  r   r   	UNLIMITEDr   r.   r,   r  openreadtobytespathlibPathr   get_access_plistget_efile_prefixdecodeas_posixr  parent)
r   r=   r  ext_filer  r?   fidcontentsr  r  s
             r   test_contentszTestExternal.test_contentsw  s    9##E** ;;==q#-01v$$UERZit$uuS	}((( (D!! 	"SxxzzH	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"8++------|DG$<$<$>$>$O$O$Q$Q$X$X$Z$Z[[ddffdfo..5>>@@v%%%%%%s   B))B-0B-c           	         d}t           j                            |          }|                                 }t          j                            |          dt          j        fg}| j        	                    d||j
        |t          j                            |                    }||d<   |j        J t          |d          5 }|                                }ddd           n# 1 swxY w Y   ||                                k    sJ t!          j        |j                                                                                                                                                  }t!          j        |          j                                        }	||	k    sJ | j                            d||j
        t          j                            |                    }
|
j        J |
d	         |k     dS )
z< Create and access an external dataset using an efile_prefixr  r   r'   r  .Nr  )r  r#   )rW   r  r   ospathbasenamer   r  r   r.   r,   dirnamer  r  r  r  r  r  r   r  r  r  r  r  r  )r   r=   r  r  r  r?   r  r   r  r  rm   s              r   test_contents_efile_prefixz'TestExternal.test_contents_efile_prefix  s    9##E** ;;==W%%h//CMBCv$$UERZikipixix  zB  jC  jC$  D  DS	}((( (D!! 	"SxxzzH	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"8++------ |DG$<$<$>$>$O$O$Q$Q$X$X$Z$Z[[ddffh''.7799v%%%%&&ueX^RTRYRaRabjRkRk&ll~)))b	Xs   C##C'*C'c                 d    | j                             dd|                                            dS )z/ External argument may be a file name str only r'   r  r  N)r   r.   r   r   s    r   test_name_strzTestExternal.test_name_str  s/     	eXFFFFFr   c                     | j                             ddt          j        |                                                      dS )z0 External argument may be a file name path only r'   r  r)  N)r   r.   r  r  r   r   s    r   test_name_pathzTestExternal.test_name_path  sK     	eX'.|DKKMM'B'B 	 	D 	D 	D 	D 	Dr   c                     |                                  d}t          fdt          |          D                       }| j                            dd|          }t          |j                  |k    sJ dS )z9 External argument may be an iterable of multiple tuples r   c              3   (   K   | ]}|d z  d fV  dS )  Nr#   ).0r  r  s     r   	<genexpr>z/TestExternal.test_iter_multi.<locals>.<genexpr>  s.      EEq1t8T2EEEEEEr   poor  r)  N)r   iterr  r   r.   r=  r  )r   Nr  r?   r  s       @r   test_iter_multizTestExternal.test_iter_multi  s|     ;;==EEEEE!HHEEEEEv$$UHx$HH4=!!Q&&&&&&r   c           
         d}|                                  }t          |gft          |dgft          |dt          j        gft          |fgft          |dfgft          |dt          j        dfgft          |ddfgffD ]O\  }}|                     |          5  | j                            d||           ddd           n# 1 swxY w Y   PdS )z" Test with invalid external lists r  r   zh5f.UNLIMITEDr'   r)  N)r   r\   r   r  r   r[   r   r.   )r   r=   r  exc_typer  s        r   test_invalidzTestExternal.test_invalid  s?    ;;== 
#1&1cm458+'8Q-)8Qq9:;(A789#
 
	G 
	GHh ""8,, G G%%eUX%FFFG G G G G G G G G G G G G G G
	G 
	Gs   B==C	C	c                     |                                  }d}d}| j                            d|||          }|j        J |j        |k    sJ |j        |k    sJ dS )z$ Create expandable external dataset )   @   )Nr;  r'   )r=   r5  r  N)r   r   r.   r+  r=   r5  )r   r  r=   r5  exp_dsets        r   test_create_expandablez#TestExternal.test_create_expandable  s{     ;;==6((eh2: ) < <&&&~&&&& H,,,,,,r   N)r    r!   r"   r7   r!  r'  r*  r,  r5  r8  r=  r#   r   r   r  r  s  s         & & &0  :G G G
D D D' ' 'G G G$
- 
- 
- 
- 
-r   r  c                   ,    e Zd ZdZddZd Zd Zd ZdS )	TestAutoCreatezP
        Feature: Datasets auto-created from data produce the correct types
    Tc                     |j                                         }|                     t          |          t          j        j                   |                     |                                |           |r|                                sJ d S d S r   )	r   r   r<   r  r}   r   r   r   r   )r   r1   r   variabler   s        r   assert_string_typez!TestAutoCreate.assert_string_type  s    enncDH$9:::... 	)&&(((((	) 	)((r   c                    d| j         d<   |                     | j         d         t          j        j                   ddg| j         d<   |                     | j         d         t          j        j                   t          j        ddgt
          j                  | j         d<   |                     | j         d         t          j        j                   dS )	z<Assigning byte strings produces a vlen string ASCII dataset s   Hello therer     as   bcyr+   zN)r   rB  r}   r   r   rW   r   object_r   s    r   test_vlen_byteszTestAutoCreate.test_vlen_bytes  s    $ssTX-@AAAUmssTX-@AAAhe}BJ???ssTX-@AAAAAr   c                    dt          d          z   | j        d<   |                     | j        d         t          j        j                   ddg| j        d<   |                     | j        d         t          j        j                   t          j        ddggt          j                  | j        d<   |                     | j        d         t          j        j                   d	S )
z?Assigning unicode strings produces a vlen string UTF-8 dataset Hello there4   r  r   bcrE  r+   rF  N)	chrr   rB  r}   r   r   rW   r   rG  r   s    r   test_vlen_unicodez TestAutoCreate.test_vlen_unicode  s    #c&kk1ssTX-?@@@DkssTX-?@@@ hd}BJ???ssTX-?@@@@@r   c                 $   t          j        d          | j        d<   | j        d         }|                     |t          j        j        d           |                     |j        	                                
                                d           dS )zV Assignment of fixed-length byte string produces a fixed-length
        ascii dataset rJ  r  F)rA  rF  N)rW   bytes_r   rB  r}   r   r   r<   r   r   r   r0   s     r   test_string_fixedz TestAutoCreate.test_string_fixed  sx     i..sVC[DH$7%HHH))2244b99999r   N)T)r    r!   r"   r7   rB  rH  rN  rQ  r#   r   r   r?  r?    se         ) ) ) )	B 	B 	B
A 
A 
A: : : : :r   r?  c                        e Zd Zd Zd Zd ZdS )TestCreateLikec                 8   t          j        d                              dd          | j        d<   | j                            d| j        d                    | j        d         }|                     |j        d           |                     |j        d            d S )Nr   r   lollike_lolr   r   )	rW   r   r   r   create_dataset_liker<   r=   assertIsr+  )r   dslikes     r   test_no_chunkszTestCreateLike.test_no_chunks  s    	"--a33u"":tve}===
#v...fmT*****r   c                    | j                             dt          j        d          d          }|                     dt
          j                            |j                  j	                   | j         
                    d|          }|                     dt
          j                            |j                  j	                   | j                             dt          j        d          d          }|                     dt
          j                            |j                  j	                   | j         
                    d	|          }|                     dt
          j                            |j                  j	                   d S )
NhondarG  T)ru   track_timesr   hyundaiibmFlenovo)r   r.   rW   r   r~  r}   h5gget_objinfo_idmtimerX  r<   )r   origsimilars      r   test_track_timeszTestCreateLike.test_track_times  s8   v$$W29R==15 % 7 7Atx33DH==CDDD&,,Y==Atx33GK@@FGGGv$$U216 % 8 8DH00::@AAA&,,Xt<<DH00==CDDDDDr   c                     | j                             ddd          }| j                             d|          }|                     |j        d           |                     |j        d           dS )z) Test when other.maxshape != other.shape otherr   r   r5  simr   N)r   r.   rX  r<   r=   r5  )r   rj  rg  s      r   test_maxshapezTestCreateLike.test_maxshape   sn     %%gur%BB&,,UE::...)511111r   N)r    r!   r"   r[  rh  rn  r#   r   r   rS  rS    sD        + + +E E E2 2 2 2 2r   rS  c                   &    e Zd Zd Zd Zd Zd ZdS )TestChunkIteratorc                     | j                             dd          }|                     t                    5  |                                 d d d            d S # 1 swxY w Y   d S )Nr'   r#   )r   r.   r[   r\   iter_chunksr>   s     r   r[  z TestChunkIterator.test_no_chunks)  s    v$$UB//y)) 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc           	      d   | j                             ddd          }t          ddd          ft          ddd          ft          dd	d          ft          d	d
d          ff}|                     t	          |                                          t	          |                     t          ddd          ft          dd	d          ft          d	dd          ff}|                     t	          |                    t          j        dd                             t	          |                     d S )Nr'   r   )    r+  r   rt  r   r;  `   r   r   a   r   r.   slicer<   listrr  rW   r   r   r?   r   s      r   test_1dzTestChunkIterator.test_1d.  s   v$$UF5$AA1R]]$uR1~~&7%2a..9J2c!__ d..00114>>BBB2b^^%bA'85Bq>>:KLd..ruRU|<<==tH~~NNNNNr   c                    | j                             ddd          }t          ddd          t          ddd          ft          ddd          t          dd	d          ft          ddd          t          ddd          ft          ddd          t          dd	d          ft          dd
d          t          ddd          ft          dd
d          t          dd	d          ft          d
d	d          t          ddd          ft          d
d	d          t          dd	d          ff}|                     t	          |                                          t	          |                     t          ddd          t          ddd          ff}|                     t	          |                    t          j        ddddf                             t	          |                     d S )Nr'   r   r   )rt  r;  ru  r   rt  r   r;  r   rv  0   4   rE  r   rx  r{  s      r   test_2dzTestChunkIterator.test_2d6  s   v$$UIg$FF1b!__eAr1oo6q"ab#q9"2r1--uQA?	r2q		5S!,,-b"a0@0@aQ0 R++U2sA->->?	r3		E!ROO,uRa/@/@b#q/	 	d..00114>>BBB2r1%%uRQ'7'78:d..ruRU2b5[/ABBCCT(^^TTTTTr   c           	         | j                             ddd          }t          ddd          t          ddd          ft          ddd          t          ddd          ft          ddd          t          ddd          ft          ddd          t          ddd          ff}t          dd          }|                     t	          |                    ||f                    t	          |                     d S )	Nr'   rW  rk   rk   ru  r   r)   r   r   )r   r.   ry  r<   rz  rr  )r   r?   r   sels       r   test_2d_partial_slicez'TestChunkIterator.test_2d_partial_sliceC  s    v$$UE%$@@1a^^U1a^^4!QNNE!QNN3!QNNE!QNN3!QNNE!QNN35 Aajjd..Sz::;;T(^^LLLLLr   N)r    r!   r"   r[  r|  r  r  r#   r   r   rp  rp  (  s[          
O O OU U UM M M M Mr   rp  c                   H    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )
TestResizezF
        Feature: Datasets created with "maxshape" may be resized
    c                     | j                             ddd          }|                     |j        d           |                     |j        d           dS )z  Create dataset with "maxshape" r'   r  r   rN   rk  Nr   r.   assertIsNotr+  r<   r5  r>   s     r   r  zTestResize.test_createT  sT    v$$UHx$HHd+++11111r   c                    | j                             ddd          }|                     |j        d           |                     |j        d           | j                             ddd          }|                     |j        d           dS )z6 Create dataset with "maxshape" using integer maxshaper'   rm  r   rk  NrJ   r  r>   s     r   r  zTestResize.test_create_1DZ  s    v$$UEB$??d+++...v$$UB$<<.....r   c                 6   | j                             ddd          }|                     |j        d           |                    d           |                     |j        d           |                    d           |                     |j        d           dS )z( Datasets may be resized up to maxshape r'   r  r  rk  r   r   Nr   r.   r<   r=   r  r>   s     r   test_resizezTestResize.test_resizec  s    v$$UHx$HHX...HX...HX.....r   c                     | j                             ddd          }|                     |j        d           |                    d           |                     |j        d           dS )z> Datasets may be resized up to maxshape using integer maxshaper'   r   rE  rk  rm  )r   Nr  r>   s     r   test_resize_1DzTestResize.test_resize_1Dl  sf    v$$UB$<<U+++EU+++++r   c                     | j                             ddd          }|                     t                    5  |                    d           ddd           dS # 1 swxY w Y   dS )z. Resizing past maxshape triggers an exception r'   r  r  rk  )r   r   N)r   r.   r[   	Exceptionr  r>   s     r   test_resize_overzTestResize.test_resize_overs  s    v$$UHx$HHy)) 	" 	"KK!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   AA"Ac                     | j                             dd          }|                     t                    5  |                    d           ddd           dS # 1 swxY w Y   dS )z/ Resizing non-chunked dataset raises TypeError r'   r  r  N)r   r.   r[   r\   r  r>   s     r   test_resize_nonchunkedz!TestResize.test_resize_nonchunkedy  s    v$$UH55y)) 	" 	"KK!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   AA Ac                     | j                             ddd          }|                    dd           |                     |j        d           d	S )
z Resize specified axis r'   r  r  rk  r   r   axisr  N)r   r.   r  r<   r=   r>   s     r   test_resize_axiszTestResize.test_resize_axis  sR    v$$UHx$HHBQX.....r   c                     | j                             ddd          }|                     t                    5  |                    dd           ddd           dS # 1 swxY w Y   dS )	z  Illegal axis raises ValueError r'   r  r  rk  r   rk   r  N)r   r.   r[   r   r  r>   s     r   test_axis_exczTestResize.test_axis_exc  s    v$$UHx$HHz** 	$ 	$KKK###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   AA!$A!c                     | j                             ddd          }|                     |j        d           |                     |j        d           dS )z? Allow zero-length initial dims for unlimited axes (issue 111) r'   )   r   )r  Nrk  N)r   r.   r<   r=   r5  r>   s     r   test_zero_dimzTestResize.test_zero_dim  sT    v$$UGj$IIW---
33333r   N)r    r!   r"   r7   r  r  r  r  r  r  r  r  r  r#   r   r   r  r  N  s         2 2 2/ / // / /, , ," " "" " "/ / /$ $ $4 4 4 4 4r   r  c                       e Zd ZdZd Zd ZdS )	TestDtypezD
        Feature: Dataset dtype is available as .dtype property
    c                     | j                             ddd          }|                     |j        t	          j        d                     dS )z Retrieve dtype from dataset r'   r  |S10NrV   r>   s     r   
test_dtypezTestDtype.test_dtype  sC    v$$UD&99RXf%5%566666r   c                     t          j        dt           j        fdt           j        fg          }| j                            dd|          }|                     |j        |           dS )z7 Retrieve dtype from complex float16 dataset (gh-2156) r  rf  r'   r  N)rW   r,   float16r   r.   r<   )r   	complex32r?   s      r   test_dtype_complex32zTestDtype.test_dtype_complex32  s]     HsBJ/#rz1BCDD	v$$UD)<<Y/////r   N)r    r!   r"   r7   r  r  r#   r   r   r  r    s<         7 7 7
0 0 0 0 0r   r  c                       e Zd ZdZd Zd ZdS )TestLenzG
        Feature: Size of first axis is available via Python's len
    c                     | j                             dd          }|                     t          |          d           dS )z Python len() (under 32 bits) r'   )8  r  r  N)r   r.   r<   r=  r>   s     r   test_lenzTestLen.test_len  s;    v$$UI66TC(((((r   c                    | j                             dd          }|                     |j        d           t          j        dk    rB|                     t                    5  t          |           ddd           n# 1 swxY w Y   n#|                     t          |          d           |                     |                                d           dS )z Python len() vs Dataset.len() r'   )        r  iNr  )	r   r.   r<   r=   sysmaxsizer[   OverflowErrorr=  r>   s     r   test_len_bigzTestLen.test_len_big  s    v$$UM::]333;+%%""=11  D			               SYY000W-----s   !A==BBN)r    r!   r"   r7   r  r  r#   r   r   r  r    s<         ) ) )
	. 	. 	. 	. 	.r   r  c                       e Zd ZdZd Zd ZdS )TestIterz;
        Feature: Iterating over a dataset yields rows
    c                 .   t          j        dd                              d          }| j                            d|          }t          ||          D ]>\  }}|                     t          |          d           |                     ||           ?dS )	z& Iterating over a dataset yields rows r   r   r+   r   r'   rt   r   N)	rW   r   r   r   r.   zipr<   r=  r   )r   ru   r?   r  rE  s        r   	test_iterzTestIter.test_iter  s    y3'''//88v$$U$66dOO 	( 	(DAqSVVQ'''!!!Q''''	( 	(r   c                     | j                             dd          }|                     t                    5  d |D              ddd           dS # 1 swxY w Y   dS )z0 Iterating over scalar dataset raises TypeError r'   r#   r=   c                     g | ]}|S r#   r#   )r0  r  s     r   
<listcomp>z-TestIter.test_iter_scalar.<locals>.<listcomp>  s    1Qr   N)r   r.   r[   r\   r>   s     r   test_iter_scalarzTestIter.test_iter_scalar  s    v$$U"$55y)) 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAN)r    r!   r"   r7   r  r  r#   r   r   r  r    s<         ( ( (    r   r  c                   x    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestStringszr
        Feature: Datasets created with vlen and fixed datatypes correctly
        translate to and from HDF5
    c                    t          j        d          }| j                            dd|          }|j                                        }|                     t          |          t           j        j	                   |                     |
                                t           j        j                   t          j        |j                  }|                     |j        d           dS )z3 Vlen bytes dataset maps to vlen ascii in the file r  r  r  r   r+   N)r}   string_dtyper   r.   r   r   r<   r  r   r   r   r   check_string_dtyper,   r  r   ra  r1   r   string_infos        r   rH  zTestStrings.test_vlen_bytes  s    000V""3b"99enncDH$9:::)<===-bh77-w77777r   c                    t          j        d          }d}| j                            dd||          }|                     | j        d         d         |           |                     | j        d                                         d         |                                           |                     | j        d         j        |           dS )	& Vlen bytes dataset handles fillvalue r  r     barr  r   r  r   Nr}   r  r   r.   r<   asstrr  r  r   ra  
fill_valuer1   s       r   test_vlen_bytes_fillvaluez%TestStrings.test_vlen_bytes_fillvalue  s    000
V""3bJ"OOQ444**,,Q/1B1B1D1DEEE.
;;;;;r   c                    t          j                    }| j                            dd|          }|j                                        }|                     t          |          t           j        j	                   |                     |
                                t           j        j                   t          j        |j                  }|                     |j        d           dS )z5 Vlen unicode dataset maps to vlen utf-8 in the file r  r   r+   r  N)r}   r  r   r.   r   r   r<   r  r   r   r   r   r  r,   r  r  s        r   rN  zTestStrings.test_vlen_unicode  s      V""3b"99enncDH$9:::);<<<-bh77-w77777r   c                    t          j                    }d}| j                            dd||          }|                     | j        d         d         |                    d                     |                     | j        d                                         d         |           |                     | j        d         j        |                    d                     dS )( Vlen unicode dataset handles fillvalue    bárr  r   r  r   r  N)r}   r  r   r.   r<   r  r  r  r  s       r   test_vlen_unicode_fillvaluez'TestStrings.test_vlen_unicode_fillvalue  s      
V""3bJ"OOQ):):7)C)CDDD**,,Q/<<<.
0A0A'0J0JKKKKKr   c                    t          j        d          }| j                            dd|          }|j                                        }|                     t          |          t          j	        j
                   |                     |                                           |                     |                                d           |                     |                                t          j	        j                   t          j        |j                  }|                     |j        d           |                     |j        d           dS )zK Fixed-length bytes dataset maps to fixed-length ascii in the file
        r  r  r   r+   rM   r  N)rW   r,   r   r.   r   r   r<   r  r}   r   r   assertFalser   r   r   r   r  r  r   r  s        r   test_fixed_asciizTestStrings.test_fixed_ascii  s    XfV""3b"99enncDH$9:::,,..///,,,)<===-bh77-w777+R00000r   c                    t          j        dd          }d}| j                            dd||          }|                     | j        d         d         |           |                     | j        d                                         d         |                                           |                     | j        d         j        |           d	S )
r  r  rM   r  r  r  r   r  r   Nr  r  s       r   test_fixed_bytes_fillvaluez&TestStrings.test_fixed_bytes_fillvalue  s    ;;;
V""3bJ"OOQ444**,,Q/1B1B1D1DEEE.
;;;;;r   c                 H   t          j        dd          }| j                            dd|          }|j                                        }|                     |                                t           j        j	                   d}|
                    d          |d<   ||d	<   ||g|d
d<   t          j        ||gt                    |dd<   t          j        |
                    d          gd
z  |          |dd<   |                     t                    5  t          j        ||gd          |dd<   d d d            n# 1 swxY w Y   t          j                            |d d         t          j        |
                    d          gdz  d                     d S )Nr  r   r  r  r   r+      cùr   r   rk   r)   rL      UrM   S)r}   r  r   r.   r   r   r<   r   r   r   r  rW   r   r   r[   r\   r   r   )r   ra  r1   r   ss        r   test_fixed_utf8zTestStrings.test_fixed_utf8  s   :::V""3b"99enn);<<<!!11a&1Q3(Aq60001Q3(AHHW--.2"===1Q3y)) 	3 	3xAc222BqtH	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	
%%b!fbh8I8I7JQ7NVY.Z.Z.Z[[[[[s   EEEc                    t          j        dd          }d                    d          }| j                            dd||          }|                     | j        d         d         |           |                     | j        d                                         d         |                    d                     |                     | j        d         j        |           d	S )
r  r  rM   r  r  r  r   r  r   N)	r}   r  r  r   r.   r<   r  r  r  r  s       r   test_fixed_utf_8_fillvaluez&TestStrings.test_fixed_utf_8_fillvalue%  s    ;;;]]7++
V""3bJ"OOQ444**,,Q/1B1B71K1KLLL.
;;;;;r   c                     t          j        d          }|                     t                    5  | j                            dd|          }ddd           dS # 1 swxY w Y   dS )zA Fixed-length unicode datasets are unsupported (raise TypeError) z|U10r  r   r+   N)rW   r,   r[   r\   r   r.   r   ra  r1   s      r   test_fixed_unicodezTestStrings.test_fixed_unicode.  s    Xfy)) 	> 	>&&sF"&==B	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   AA!Ac                    t          j        d          }| j                            dd|          }d}||d<   |d         }|                     t          |          t                     |                     ||           dS )	zN writing and reading to vlen bytes dataset preserves type and content
        r  r  r  r   r+      Hellor   N)r}   r  r   r.   r<   r  bytesr   ra  r1   ru   outs        r   test_roundtrip_vlen_bytesz%TestStrings.test_roundtrip_vlen_bytes4  s     000V""3b"991ecE***d#####r   c                    t          j        d          }| j                            dd|          }d}||d<   |d         }|                     t          |          t           j                   |                     ||           dS )z[ Writing to and reading from fixed-length bytes dataset preserves
        type and content r  r  r   r+   r  r   N)rW   r,   r   r.   r<   r  rP  r  s        r   test_roundtrip_fixed_bytesz&TestStrings.test_roundtrip_fixed_bytes?  s     XfV""3b"991ecBI...d#####r   c                 L   t          j                    }| j                            dd|          }d}||d<   |                     |d         t
                     |                                d         }|                     |t                     |                     ||           d S )Nr  r   r+      fàilter   )	r}   r  r   r.   r|   r  r  r  r<   r  s        r   test_retrieve_vlen_unicodez&TestStrings.test_retrieve_vlen_unicodeJ  s      V""3R"881beU+++hhjjmc3'''d#####r   c                    | j                             ddt          j                              }d}||d<   |                    d          }|                     t                    5  |d          d d d            n# 1 swxY w Y   |                     |                    dd          d         d           |                     |                    d	          d         |           |                     d
t          |                                                     t          j                            |                                d d         t          j        |gt                               t          j                            t          j        |                                          d d         t          j        |gt                               d S )Nr  r   r+   r  r   r  ignorefiltelatin-1rM   r   )r   r.   r}   r  r  r[   UnicodeDecodeErrorr<   r~  r=  rW   r   r   r   r   asarray)r   r1   ru   strwrap1s       r   
test_asstrzTestStrings.test_asstrT  s   V""3T5F5H5H"II188G$$122 	 	QKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'844Q7AAA 	BHHY//2D999 	S__--- 	
%%HHJJrrNBHdV6:::	
 	
 	
 	
%%Jrxxzz""2A2&$v(F(F(F	
 	
 	
 	
 	
s   %	A::A>A>c                    t          j        d          }| j                            dd|          }d}t	          j        |                    d          |          |d<   |                     |d         t          j                   |	                                d         }|                     |t                     |                     ||           |                     |	                    d	d
          d         d           |                     |	                    d          d         |           t          j                            |	                                d d         t	          j        |gt                               d S )Nr   r   r  r   r+   r  r  r   r  r  r   r  r   )r}   r  r   r.   rW   r   r  r|   rP  r  r  r<   r~  r   r   r   r  s        r   test_asstr_fixedzTestStrings.test_asstr_fixedo  sS   a(((V""3R"88W--R8881beRY///hhjjmc3'''d### 	'844Q7=== 	BHHY//2D999 	
%%HHJJrrNBHdV6:::	
 	
 	
 	
 	
r   c                     t          j        d          }| j                            dd|          }d}|                     t
                    5  ||d<   ddd           dS # 1 swxY w Y   dS )zGEncoding error when writing a non-ASCII string to an ASCII vlen datasetr  r  r   r+   r  r   N)r}   r  r   r.   r[   UnicodeEncodeError)r   ra  r1   ru   s       r   test_unicode_write_errorz$TestStrings.test_unicode_write_error  s    w''V""3b"99122 	 	BqE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A!!A%(A%c                 F   t          j                    }| j                            dd|          }dt	          d          z                       d          }||d<   |d         }|                     t          |          t                     |                     ||           dS )	zJ Writing valid utf-8 byte strings to a unicode vlen dataset is OK
        r  r   r+   rJ  rK  utf8r   N)	r}   r  r   r.   rM  r  r<   r  r  r  s        r   test_unicode_write_bytesz$TestStrings.test_unicode_write_bytes  s       V""3b"99V,44V<<1ecE***d#####r   c                 (   t          j        d          }| j                            dd|          }d}||d<   |d         }|                     t          |          t                     |                     ||                    d                     dS )z: Writing an ascii str to ascii vlen dataset is OK
        r  r  r   r+   zASCII stringr   N)r}   r  r   r.   r<   r  r  r  r  s        r   test_vlen_bytes_write_ascii_strz+TestStrings.test_vlen_bytes_write_ascii_str  s     w''V""3b"991ecE***dkk'2233333r   N)r    r!   r"   r7   rH  r  rN  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r#   r   r   r  r    s#        
8 8 8< < <8 8 8L L L1 1 1< < <\ \ \ < < <> > >	$ 	$ 	$	$ 	$ 	$$ $ $
 
 
6
 
 
,  	$ 	$ 	$	4 	4 	4 	4 	4r   r  c                   *    e Zd ZdZd Zd Zd Zd ZdS )TestCompoundz:
        Feature: Compound types correctly round-trip
    c           
      >   t          j        dt           j        fdt           j        fdt           j        fdt           j        fdt           j        fdt           j        fdt           j        fg          }t          j        d|	          }|j        D ]'}t           j                            d          d
z  ||<   (|| j        d<   | j        d         d         }| 	                    t          j
        ||k                         |                     |j        |j                   dS )z: Compound types are read back in correct order (issue 236)weightcputimewalltimeparents_offset	n_parentsstatusendpoint_typer  r+   r   test.N)rW   r,   r  uint32uint8rY  fieldsr  r   r~   rH  r<   )r   ra  r  keyoutdatas        r   test_rtzTestCompound.test_rt  s    X2:.'4("*5.	:)295&1-rx8< = = :e2...9 	: 	:CI,,U33c9HSMM!v&.%w(23344477777r   c                 (   t          j        dt           j        dffdt           j        fg          }t          j        d|          }|j        D ]3}t           j                            ||         j                  dz  ||<   4| j        	                    dd|          }|j        D ]}||         ||<   | j        d         d	         }| 
                    t          j        ||k                         |                     |j        |j                   d S )
Nr  r   r
  r  r+   rP   r   r  .)rW   r,   r  r  rY  r  r  r=   r   r.   r~   rH  r<   )r   ra  r  r  r1   r  s         r   test_assignzTestCompound.test_assign  s   XBJ?3)2848 9 9 :e2...9 	M 	MCI,,(3-2E,FFLHSMMV""65";;9 	$ 	$CsmBsGG&.%w(23344477777r   c                    t          j        dt           j        fdt           j        fdt           j        fg          }t          j        d|          }|j        D ]'}t           j                            d          dz  ||<   (|| j        d<   t           j                            | j        d                             ddg          d d          |ddg                    t           j                            | j        d                             d          d d          |d                    t           j                            t          j	        | j        d                             ddg                    |ddg                    t          j        dt           j
        fg          }t           j                            t          j	        | j        d                             dg          |          |dg                             |                     t          | j        d                             d                    dk    sJ d S )	Nr  rE  rF  r  r+   r   r  r  )rW   r,   r  rY  r  r  r   r   r   r  r*   astyper=  )r   ra  r  r  dt_ints        r   test_fieldszTestCompound.test_fields  s	   X"*"*"*
   :e2...9 	: 	:CI,,U33c9HSMM!v 	
%%F6N!!3*--aaa0(C:2F	
 	
 	
 	
%%F6N!!#&&qqq)8C=	
 	
 	
 	
%%Jtvf~,,c3Z88998S#J;O	
 	
 	
 C?+,,

%%Jtvf~,,cU336BBBcUO""6**	
 	
 	
 46&>((--.."444444r   c                 r   t          j        dt          j        t           j                  fdt          j        t           j                  fg          }t          j        dt          j        |          fdt           j        fg          }t          j        t          dd          t           j                  t          j        t          dd	          t           j                  f}t          j        t          d
d          t           j                  t          j        t          dd          t           j                  f}t          j        t          j        ||g|          dft          j        |g|          dfg|          }|| j        d<   | j        d         }| 	                    ||d           d S )Nr   r   f1f2r   r   r+   rL   r   rM   r  r     rk   r1   F)check_alignment)
rW   r,   r}   
vlen_dtyper*   r   r   r  r   r   )r   dt_innerra  inner1inner2ru   r  s          r   test_nested_compound_vlenz&TestCompound.test_nested_compound_vlen  s   8c4?28#<#<= $/"(";";<> ? ? Xdoh778bh') * * (5A;;bh777(5A;;bh7779 (5R==999(5R==999; x"(FF#38DDDaH6((;;;Q?A " " " tfTl 	c4?????r   N)r    r!   r"   r7   r  r  r  r#  r#   r   r   r  r    s`         8 8 8(8 8 8"!5 !5 !5F@ @ @ @ @r   r  c                       e Zd Zd Zd ZdS )TestSubarrayc                    | j                             ddd          }g d|d<   t          j                            |d d          g dg           g dg|d d <   t          j                            |d d          g dg           d S Nr   rB   3int8r+   r   rk   r   r   )r)   r   rL   )r   r.   rW   r   r   r0   s     r   test_write_listzTestSubarray.test_write_list  s    V""3G"<<		1

%%beiii[999111

%%beiii[99999r   c                 V   | j                             ddd          }t          j        g d          |d<   t          j                            |d d          g dg           t          j        g dg          |d d <   t          j                            |d d          g dg           d S r'  )r   r.   rW   r   r   r   r0   s     r   test_write_arrayzTestSubarray.test_write_array  s    V""3G"<<##1

%%beiii[999)))%%111

%%beiii[99999r   N)r    r!   r"   r*  r,  r#   r   r   r%  r%    s2        : : :: : : : :r   r%  c                   *    e Zd ZdZddddZd Zd ZdS )	TestEnumzM
        Feature: Enum datatype info is preserved, read/write as integer
    r   r   rg  )REDGREENBLUEc                     t          j        | j        d          }| j                            dd|          }|j        }t          j        |          }|                     || j                   dS )z= Enum datasets can be created and type correctly round-trips rf  basetyper  r~  r+   N)r}   
enum_dtypeEDICTr   r.   r,   check_enum_dtyper<   )r   ra  r1   dt2dict2s        r   r  zTestEnum.test_create%  si    _TZ#666V""3
""==h%c**
+++++r   c                 2   t          j        | j        d          }| j                            dd|          }d|d<   d|dd	d	f<   |                     |d         d           |                     |dd	d	f         t          j        d
d                     d	S )z/ Enum datasets can be read/written as integers r$  r3  r  r~  r+   rg  )#   %   r   N)dr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )	r}   r5  r6  r   r.   r<   r   rW   r   r  s      r   test_readwritezTestEnum.test_readwrite-  s    _TZ$777V""3
""==6
1aaa4FR(((bAAAh4(H(H(HIIIIIr   N)r    r!   r"   r7   r6  r  r=  r#   r   r   r.  r.    sR          2..E, , ,J J J J Jr   r.  c                   f    e Zd ZdZd Z ej         eed          d          d             Z	d Z
dS )
TestFloatszA
        Test support for mini and extended-precision floats
    c                     | j                             dd|          }|                     |j        |           t	          j        d|          }||d<   |                     |d         |           d S )Nr  r   r+   .)r   r.   r<   r,   rW   rw   r   )r   ra  r?   ru   s       r   	_exectestzTestFloats._exectest=  ss    v$$S&$;;R(((wvR(((S	d3i.....r   r  zNumPy float16 support requiredc                 T    |                      t          j        d                     dS )z Mini-floats round trip r  N)rA  rW   r,   r   s    r   	test_minizTestFloats.test_miniD  s&     	rx	**+++++r   c                    t          t          d          r9|                     t          j        j        t          j        d                     dS |                     t          j        j        t          j        d                     dS )z Test mapping for float16 r  z<f2z<f4N)rp   rW   r<   r   
IEEE_F16LEr,   r   s    r   test_mini_mappingzTestFloats.test_mini_mappingJ  sg    2y!! 	DS^128E??CCCCCS^128E??CCCCCr   N)r    r!   r"   r7   rA  r   
skipUnlessrp   rW   rC  rF  r#   r   r   r?  r?  7  sy         / / / R]772y))+KLL, , ML,
D D D D Dr   r?  c                       e Zd ZdZd Zd ZdS )TestTrackTimesz"
        Feature: track_times
    c                     | j                             ddd          }t          j                            |j                  j        }|                     d|           dS )zC check that when track_times=False, the time stamp=0 (Jan 1, 1970) r'   r(   Fr^  r   N)r   r.   r}   rb  rc  rd  re  r<   )r   r1   ds_mtimes      r   test_disable_track_timesz'TestTrackTimes.test_disable_track_timesX  sT    V""5$E"BB8''//5H%%%%%r   c                     |                      t                    5  | j                            ddd           ddd           dS # 1 swxY w Y   dS )z3 check that when give track_times an invalid value r'   r(   nullrK  NrZ   r   s    r   test_invalid_track_timesz'TestTrackTimes.test_invalid_track_times^  s    y)) 	C 	CF!!%6!BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cr3  N)r    r!   r"   r7   rM  rP  r#   r   r   rI  rI  R  sA         & & &C C C C Cr   rI  c                       e Zd ZdZd Zd ZdS )TestZeroShapez7
        Features of datasets with (0,)-shape axes
    c                    | j                             ddd          }|                     |j        t	          j        |          j                   | j                             ddd          }|                     |j        t	          j        |          j                   | j                             dd	d
          }|                     |j        t	          j        |          j                   dS )z1 Empty datasets can be converted to NumPy arrays r  r   Nrk  rE  r   r   rF  r   r   )NN)r   r.   r<   r=   rW   r   r0   s     r   test_array_conversionz#TestZeroShape.test_array_conversionj  s    V""3D"9928B<<#5666V""3w"??28B<<#5666V""3"FF28B<<#566666r   c                    ddg}| j                             dd|d          }t          j        d|          }|                     |d         j        |j                   |                     |d         j        |j                   |                     |d	         j        |j                   |                     |d	         j        |j                   d
S )z- Slicing into empty datasets works correctly )r   r   )r   rf  r  rT  r   rN  r+   .r#   N)r   r.   rW   emptyr<   r=   r,   )r   ra  r1   r   s       r   test_readingzTestZeroShape.test_readingu  s    *%V""3B"IIht2&&&C	222C	222Bsy111Bsy11111r   N)r    r!   r"   r7   rV  rY  r#   r   r   rR  rR  d  s<         	7 	7 	7	2 	2 	2 	2 	2r   rR  )r   rM   rL   z+Issue with empty region refs in HDF5 1.10.6)reasonc                   P    e Zd ZdZd Zd Zed             Zed             Zd Z	dS )TestRegionRefsz3
        Various features of region references
    c                     t                               |            t          j        d                              d          | _        | j                            d| j                  | _        | j        | j        d<   d S )Ni'  r~  r  rt   .)	r   r   rW   r   r   ru   r   r.   r?   r   s    r   r   zTestRegionRefs.setUp  sd    $Ii((00<<	F))#DI)>>		#r   c                     t           j        dddddf         }| j        j        |         }|                     | j        |         | j        |                    dS )z4 Region references can be used as slicing arguments r   r;  rM   r   r   N)rW   r   r?   	regionrefr   ru   r   slicrefs      r   test_create_refzTestRegionRefs.test_create_ref  sS    uRUBs1H_%i!$'dindio>>>>>r   c                 b    | j         j        d d         }| j         |         }|j        dk    sJ d S )Nr   )r?   r_  rP   )r   rb  r  s      r   test_empty_regionz TestRegionRefs.test_empty_region  s3    i!"1"%inx1}}}}}}r   c                 P   | j                             ddd          }t          j                            t          j        j                  }|                                 t          j                            |j        dt          j        j	        |          }||         t          j
        t          j        d                    k    sJ |                                 t          j                            |j        dt          j        j	        |          }||         |d         k    sJ d S )Nscalar      ?r^  ru   r,      .r#   )r   r.   r}   h5screateSCALARselect_noneh5rr   DATASET_REGIONr   rW   r,   
select_all)r   r1   sidrb  s       r   test_scalar_datasetz"TestRegionRefs.test_scalar_dataset  s    V""8#T"BBhoodho.. 	hoobeT48+BCHH#w$*RXd^^444444 	hoobeT48+BCHH#w"R&      r   c                 <   t           j        dddddf         }| j        j        |         }|                     | j        j                            |          | j        j                   |                     | j        j                            |          d           dS )z, Region reference shape and selection shape r   r;  rM   r   r   )rM      N)rW   r   r?   r_  r<   r=   	selectionr`  s      r   test_ref_shapezTestRegionRefs.test_ref_shape  s    uRUBs1H_%i!$',22377III,66s;;XFFFFFr   N)
r    r!   r"   r7   r   rc  empty_regionref_xfailre  rs  rw  r#   r   r   r\  r\    s         # # #? ? ?    ! ! !G G G G Gr   r\  c                   $    e Zd ZdZd Zd Zd ZdS )
TestAstypez(.astype() wrapper & context manager
    c                     | j                             ddd          }t          j        d          |d<   |                    d          d d          }|                     |t          j        dd                     d S Nr  r   r%  r+   r   .r^  )r   r.   rW   r   r  r   r   r?   r   s      r   test_astype_wrapperzTestAstype.test_astype_wrapper  st    v$$S&$==IcNNS	kk$"c29S#=#=#=>>>>>r   c                     | j                             ddd          }t          j        d          |d<   |                     dt          |                    d                               d S r|  )r   r.   rW   r   r<   r=  r  r>   s     r   test_astype_wrapper_lenz"TestAstype.test_astype_wrapper_len  s_    v$$S&$==IcNNS	c$++d"3"34455555r   c                    | j                             ddd          }t          j        d          |d<   t          j        |                    d          d          }|                     |t          j        dd                     d S r|  )r   r.   rW   r   r  r  r   r}  s      r   test_astype_wrapper_asarrayz&TestAstype.test_astype_wrapper_asarray  sz    v$$S&$==IcNNS	jT**$777c29S#=#=#=>>>>>r   N)r    r!   r"   r7   r~  r  r  r#   r   r   rz  rz    sK         ? ? ?6 6 6
? ? ? ? ?r   rz  c                       e Zd ZdZd ZdS )TestScalarCompoundzl
        Retrieval of a single field from a scalar compound dataset should
        strip the field info
    c                     t          j        dg          }| j                            dd|          }|                     |d         j        t          j        d                     d S )Nre  r  r#   r+   r   rf  )rW   r,   r   r.   r<   )r   ra  r?   s      r   test_scalar_compoundz'TestScalarCompound.test_scalar_compound  sY    Xzl##v$$S"B$77c"(3--88888r   N)r    r!   r"   r7   r  r#   r   r   r  r    s-         
9 9 9 9 9r   r  c                   X    e Zd Zd Zd Zd Zd Zd ZddZd Z	d	 Z
d
 Zd Zd Zd ZdS )TestVlenc                    t          j        t                    }| j                            dd|          }t          j        d          |d<   t          j        d          |d<   g d|d<   t          j        d          |d<   |                     |d         t          j        d                     |                     |d         t          j        d                     |                     |d         t          j        g d                     |                     |d         t          j        d                     t          j        t          j        d	          t          j        d
          gt                    |dd<   |                     |d         t          j        d	                     |                     |d         t          j        d
                     t          j        t          j        d          t          j        d          g          |dd<   |                     |d         t          j        d                     |                     |d         t          j        d                     d S )Nvlenr(   r+   r   r   r   r)  rk   r   r)   )
r}   r  intr   r.   rW   r   r   r   r   r  s      r   r  zTestVlen.test_int  s   _S!!V""64r"::	!1	!1		1	!1beRYq\\222beRYq\\222beRXiii%8%8999beRYq\\222(BIaLL")A,,7vFFF1Q3beRYq\\222beRYq\\222(BIaLL")A,,7881Q3beRYq\\222beRYq\\22222r   c                     t          j        t                    }| j                            dd|          }| j                            dd|d         j                   d S )Nr  rB   r+   vlen2r#   )r}   r  r  r   r.   r,   r  s      r   test_reuse_from_otherzTestVlen.test_reuse_from_other  sS    _S!!V""64r"::gtRV\:::::r   c                 v   dt           fdt          j        t                     fg}| j                            dd|          }| j        j        }| j                                         t          j        |d          | _        | j                            dd| j        d         d         d         j                   d S )Nr   r   r  rB   r+   r  r#   )	r  r}   r  r   r.   r  r   r   r,   )r   ra  r1   fnames       r   test_reuse_struct_from_otherz%TestVlen.test_reuse_struct_from_other  s    Cj3 4 456V""64r"::5#&&gtTVF^C-@-D-JKKKKKr   c                 b   t          j        t                    }| j                            dd|          }t          j        ddg          |d<   t          j        dg          |d<   g d|d	<   |                     |d         t          j        ddg                     |                     |d         t          j        dg                     |                     |d	         t          j        g d
                     t          j        g dt          j        d          gt                    |dd	<   |                     |d         t          j        d                     |                     |d         t          j        d                     t          j        t          j        g d          t          j        g d          g          |dd	<   |                     |d         t          j        d                     |                     |d         t          j        d                     d S )Nr  r@  r+   gffffff?333333?r   r   )r  rk   r   rk   r)  )皙?g?g @g@r)   r)   r   )r  r  皙@)皙?r  r  r   )
r}   r  r  r   r.   rW   r   r   r   r   r  s      r   test_convertzTestVlen.test_convert  s   _S!!V""64r"::#s$$1#11beRXq!f%5%5666beRXqc]]333beRXiii%8%8999(333RYq\\B&QQQ1Q3beRYq\\222beRYq\\222(BH___55H___557 8 81Q3beRYq\\222beRYq\\22222r   c                 Z   t          j        t                    }| j                            dd|          }t          j        d          |d<   t          j        t          j        d          t          j        d          gt          j        d          t          j        d          ggt                    |d d d d f<   t          j        t          j        d          t          j        d          gt          j        d          t          j        d          gg          |d d d d f<   d S )Nr  r  r+   r   rU  r   rk   )	r}   r  r  r   r.   rW   r   r   r   r  s      r   test_multidimzTestVlen.test_multidim  s    _S!!V""66"<<9Q<<48billBIaLL9Yq\\29Q<<8:AGI I I111aaa48billBIaLL9 illBIaLL9; < <111aaa4r   r  c                    t          j        |          }| j                            |d|          }t	          j        g d|          }t	          j        g d|          }t	          j        g dt	          j        d                    }|                    |          }g d}	t	          j        |	|          }
g d}t	          j        ||          }||d	<   ||d
<   ||d<   |	|d<   ||d<   |                     ||d	                    |                     ||d
                    |                     ||d                    |                     |
|d                    |                     ||d                    t	          j        ddg|          }
|
dd         |d	<   |                     |
|d	                    | j        	                                 | j        
                                 dS )z
        Helper for testing various vlen numpy data types.
        :param np_dt: Numpy datatype to test
        :param dataset_name: String name of the dataset to create for testing.
        r  r+   )rh         @g      >@)g33333Y@gi@gfffffX@g      %g     r)r   rk   r  r*   )rh  r  g      @r  g      )r   ir   r   i'  r   r   r   rk   r   r)   g333333?r  N)r}   r  r   r.   rW   r   r,   r  r   r  r   )r   np_dtdataset_namera  r1   array_0array_1array_2casted_array_2list_3list_array_3list_4list_array_4s                r   _help_float_testingzTestVlen._help_float_testing  s    _U##V""<R"@@ (===666(>>>eLLL (999BHW,=,=>>> .. *))xe444 ,++xe44411111gr!u---gr!u---nbe444lBqE222lBqE222 xc
%888QQQ1lBqE222 	r   c                 X    t          j        d          }|                     |           d S )Nr  rW   r,   r  r   r  s     r   test_numpy_float16zTestVlen.test_numpy_float16D  +    ##  '''''r   c                 X    t          j        d          }|                     |           d S )Nfloat32r  r  s     r   test_numpy_float32zTestVlen.test_numpy_float32H  r  r   c                 X    t          j        d          }|                     |           d S )Nr  r  r  s     r   test_numpy_float64_from_dtypez&TestVlen.test_numpy_float64_from_dtypeL  r  r   c                 H    t           j        }|                     |           d S r   )rW   r  r  r  s     r   test_numpy_float64_2zTestVlen.test_numpy_float64_2P  s#    
  '''''r   c                    | j                             ddt          j        d                     t	          j        g d          }|ddd         | j         d         d<   t          | j         d         d         |ddd         k              s)J | j         d         d          d	|ddd                      | j                             d
dt          j        d                     t	          j        g d          }|ddd         | j         d
         d<   t          | j         d
         d         |ddd         k              s)J | j         d
         d          d	|ddd                      dS )z4Test that non-contiguous arrays are stored correctlyncr   r  r+   )TFTTFFFNrk   r   z != nc2int8)rk   r)   r   r   r   r   r   )r   r.   r}   r  rW   r   rH  )r   r  rE  s      r   test_non_contiguous_arraysz#TestVlen.test_non_contiguous_arraysT  se   dE1H1HIIIHCCCDDCCaC&tQ46$<?a!f,--OO$&,q//O/Oq1v/O/OOO-eU$/&2I2IJJJH+++,,SSqS6ua46%=#q1v-..QQ46%=3C0Q0Q33Q30Q0QQQ.QQr   c                 .   t          j        d          }d}| j                            dd||          }t	          j        t                    5  t          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.   rc   r   r   rW   r   r  r  r  s       r   test_asstr_array_dtypezTestVlen.test_asstr_array_dtypeb  s    000
V""3bJ"OO]:&& 	, 	,HRXXZZs++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   .B

BBN)r  )r    r!   r"   r  r  r  r  r  r  r  r  r  r  r  r  r#   r   r   r  r    s        3 3 3$; ; ;
L L L3 3 3"< < <. . . .`( ( (( ( (( ( (( ( (R R R, , , , ,r   r  c                       e Zd Zd Zd ZdS )TestLowOpenc                 n    | j                             dd          }|j                                        }dS )z Test H5Dget_access_plist r'   r(   N)r   r.   r   r  )r   r1   p_lists      r   test_get_access_listz TestLowOpen.test_get_access_listl  s0    V""5$//''))r   c                 :   t           j                            t           j        j                  }| j                            dd          }~t           j                            | j        j        d|          }| 	                    |t           j        j
                   dS )z# Test the dapl keyword to h5d.open r  r      xN)r}   h5prl  DATASET_ACCESSr   r.   ro  r  r   r|   	DatasetID)r   daplr?   dsids       r   	test_daplzTestLowOpen.test_daplq  sp    xtx677v$$S&11x}}TVYd33dDH$677777r   N)r    r!   r"   r  r  r#   r   r   r  r  j  s2        * * *
8 8 8 8 8r   r  c            
      H   ddl m}   |             }t          j        |d          5 }|                    dddd           d	|d         d d <   d d d            n# 1 swxY w Y   |                    d           t          j        |d
          5 }|d         j        }|                                dk    sJ t          d          D ]~}t          t          j        t          j        |d                    dz            }|                    |          }|j        |k    sJ |j        dk    sJ |j        J |j        dk    sJ |                    d          }|j        dk    sJ |j        dk    sJ |j        J |j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   BytesIOr   r  r~  r{   r$  r=   r+  r,   r   r  r   rM   rU  )ior  r}   r   r.   seekr   get_num_chunksr  r<  rW   r   unravel_indexget_chunk_infochunk_offsetfilter_maskbyte_offsetrP   get_chunk_info_by_coord)r  buffoutfinr1   joffsetsis           r   test_get_chunk_detailsr  z  sK   
'))C	3		 F*XTRRRVQQQ               HHQKKK	3		 [^  ""c))))s 	 	A28B$4Q$A$ABBRGHHF""1%%B?f,,,,>Q&&&&>---7Q;;;;;''//&((((~""""~)))w{{{{{#                 s$   'AA AC;FFF)r   rG  r   )r   rM   rM   )r   rM   c   zJchunk iteration requires  HDF5 1.10.10 and later 1.10, or 1.12.3 and laterc                  @   ddl m}   |             }t          j        |d          5 }|                    dddd           d	|d         d
d
<   d
d
d
           n# 1 swxY w Y   |                    d           t          j        |d          5 }|d         j        }|                                }|dk    sJ i t          |          D ]!}|	                    |          }||j
        <   "fd}|                    |           d
d
d
           d
S # 1 swxY w Y   d
S )z%H5Dchunk_iter() for chunk informationr   r  r   r  r~  r{   r$  r  r   Nr  r   c                     | j                  }| j         |j         k    sJ | j        |j        k    sJ | j        |j        k    sJ | j        |j        k    sJ d S r   )r  r  r  rP   )
chunk_infoknowncis     r   callbackz!test_chunk_iter.<locals>.callback  sp    z./E*e.@@@@@)U->>>>>)U->>>>>?ej000000r   )r  r  r}   r   r.   r  r   r  r  r  r  
chunk_iter)	r  r  r   r  
num_chunksr  r  r  r  s	           @r   test_chunk_iterr    s   
 
'))C	3		 	z($OOO&	!!!               HHQKKK	3		 "y|((**
S    z"" 	% 	%A$$Q''B"$Br	1 	1 	1 	1 	1 	!!!#" " " " " " " " " " " " " " " " " "s$   'AA!AA7DDDc                 X    |                      dd          }|j        J |j        J d S )NrX  r*   r+   )r.   r=   r5  )r   r1   s     r   test_empty_shaper    s<    		%	%gW	%	=	=B8;r   c                     ddl m}   |             }t          j        |d          5 }|                    dd           d d d            n# 1 swxY w Y   |                    d           t          j        |d          5 }|d         j        J |d         j                                        J |d         j        	                                dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r  r   rX  r  r+   r  )
r  r  r}   r   r.   r  r+  r   
get_offsetget_storage_size)r  r  r  r  s       r   test_zero_storage_sizer    sw   
'))C	3		 4G73334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 HHQKKK	3		 77|"***7|))++3337|//11Q666667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s$   A

AA?AC##C'*C'c                 T   t          j        t           j                  j        t          j        t           j                  j        dz   g}|                     d|t           j                  }|j        t          j        t           j                  k    sJ t           j                            |d d          t          j	        |t           j                             ||d d <   t           j                            |d d          t          j	        |t           j                             d S )Nr   r  ri  r+   )
rW   iinfor   maxr.   uint64r,   r   r   r   )r   ru   r1   s      r   test_python_int_uint64r    s    HRX"BHRX$6$6$:Q$>?D 
	%	%cBI	%	F	FB8rx	******J!!"QQQ%$bi)H)H)HIII BqqqEJ!!"QQQ%$bi)H)H)HIIIIIr   c                     |                      ddt          j                  }t          j                            dd          }||d d g ddf<   d S )	Nru   )r   r/  rk   r+      )r   r   rk   r  )r   rk   r)   .)r.   rW   r  r  r  )r   r   blocks      r   test_setitem_fancy_indexingr    sW    

&
&v|28
&
L
LCIc	22E"C999cr   c                      t          t          d                    5 } | d         d         dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzvlen_string_dset.h5DS1r   s   Partingr   r   r   s    r   test_vlen_spacepadr    s    	 !677	8	8 )Ax{j((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )   A  AAc                      t          t          d                    5 } | d         d         dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzvlen_string_dset_utc.h5ds1r   s   2009-12-20T10:16:18.662409Zr  r  s    r   test_vlen_nulltermr    s    	 !:;;	<	< =x{<<<<<<= = = = = = = = = = = = = = = = = =r  c                     d}|                      ddt          j        |d          }t          |          |j        v sJ d S )N   ru   r{   T)r=   r,   rw  allow_unknown_filter)r.   rW   r  r  _filters)r   fake_filter_idr1   s      r   test_allow_unknown_filterr    sR    N		%	%hbhN! 
& 
 
B ~"+------r   c            
      (   ddl m}   |             }t          j        |d          5 }|                    dddddd	d
          }|j                                                                        }|j                                                                        dd         |k    sJ |dk    sJ 	 ddd           n# 1 swxY w Y   |	                    d           t          j        |d          5 }|
                    dddddd          }|j                                                                        }|j                                                                        dd         |k    sJ |dk    sJ 	 ddd           dS # 1 swxY w Y   dS )z2Chunk cache configuration for individual datasets.r   r  r   r  )rM   r   )r   r)   r$      r    )r=   r+  r,   rdcc_nbytesrdcc_w0rdcc_nslotsr   N)r  r  r  r    0 q=
ףp?  )r=   r,   r  r  r  )r  r	  r
  )r  r  r}   r   r.   r   r  get_chunk_cache	get_cacher  r  )r  r  r  r1   ds_chunk_cacher  s         r   test_dset_chunk_cacher    s1   
'))C	3		 =  xd'# ! G G //11AACCw''))3355abb9^KKKK!<<<<<<= = = = = = = = = = = = = = = HHQKKK	3		 >  xt'3 ! H H //11AACCv&&((2244QRR8NJJJJ!======> > > > > > > > > > > > > > > > > >s%   B	B<<C C 1BFFFc                       e Zd ZdZd Zd ZdS )TestCommutativez|
    Test the symmetry of operators, at least with the numpy types.
    Issue: https://github.com/h5py/h5py/issues/1947
    c                    d}| j                             d|t          t          j        j        |           }t          j        |d                   }t          j        ||k    ||k    k              sJ t          j        ||k    ||k    k              sJ d}t          j        |          |z   }t          j        ||k    ||k    k              sJ t          j        ||k    ||k    k              sJ dS )z
        Create a h5py dataset, extract one element convert to numpy
        Check that it returns symmetric response to == and !=
        r   r   r  r,   ru   rU  gMbP?N)	r   r.   r  rW   r  r  r  rH  nanmax)r   r=   r?   valdeltanvals         r   test_numpy_commutativez&TestCommutative.test_numpy_commutative  s    
 v$$VU%*,).%*@ % B B
 jd$$vsd{455555vsd{455555 yu$vtt|677777vtt|67777777r   c                     d}| j                             d|t          t          j        j        |           }t          d          }||k    ||k    k    sJ ||k    ||k    k    sJ dS )z
        Create a h5py dataset and check basetype compatibility.
        Check that operation is symmetric, even if it is potentially
        not meaningful.
        r  r  r  r  N)r   r.   r  rW   r  r  )r   r=   r?   r  s       r   test_basetype_commutativez)TestCommutative.test_basetype_commutative&  s~     v$$VU%*,).%*@ % B B
 Biit----t------r   N)r    r!   r"   r7   r  r  r#   r   r   r  r  	  s<         8 8 80. . . . .r   r  c                       e Zd ZdZd Zd ZdS )TestVirtualPrefixz%
    Test setting virtual prefix
    c                 J   d}d}| j                             d|t          t          j        j        | |          }t          j        |j        	                                
                                                                                                          }||k    sJ d S )Nr  /path/to/virtualr  )r,   ru   virtual_prefix)r   r.   r  rW   r  r  r  r  r   r  get_virtual_prefixr  r  )r   r=   r   r?   virtual_prefix_readbacks        r   test_virtual_prefix_createz,TestVirtualPrefix.test_virtual_prefix_create:  s    +v$$VU%*,).%*@6D % F F #*,tw/G/G/I/I/\/\/^/^/e/e/g/g"h"h"q"q"s"s&.888888r   c                    d}| j                             ddd|          }t          j        |j                                                                                                                                                  }| 	                    ||           | 
                    |t                     | 	                    |j        d           d S )Nr  r'   r   r   )r   )r   r  r  r  r   r  r!  r  r  r<   r|   r	   r=   )r   r   r?   r"  s       r   test_virtual_prefix_requirez-TestVirtualPrefix.test_virtual_prefix_requireD  s    +v%%eWcN%[["),tw/G/G/I/I/\/\/^/^/e/e/g/g"h"h"q"q"s"s)@AAAdG,,,W-----r   N)r    r!   r"   r7   r#  r%  r#   r   r   r  r  6  s<         9 9 9. . . . .r   r  r   c                 b    t          j        d          }d}|                     d|||          S )Nr  r  s   fillr  r  )r}   r  r.   filer=   ra  r  s       r   ds_strr)  M  s7    		G	,	,	,BJsEzJJJr   c                     t          j        dt          j        d          fdt           j        fg          }t          j        d|          }t          j        ||          | d<   | d         S )Nr'   r  r  rJ   )fillr  r+   r  )rW   r,   r}   r  r  r  broadcast_tor'  s       r   	ds_fieldsr-  S  sm    		!73334	
 
 
B M444J
E22DI9r   zview_getter,make_dsc                     | S r   r#   r1   s    r   <lambda>r0  `  s    B r   c                 8    |                      t                    S )Nr+   )r  r   r/  s    r   r0  r0  a  s    BIIFI++ r   c                 *    |                                  S r   )r  r/  s    r   r0  r0  b  s    BHHJJ r   c                 ,    |                      d          S )Nr'   )r  r/  s    r   r0  r0  c  s    BIIe$$ r   )r1   r  r  r  )ids)rk   r   Fr   Tc                 ^     ||          } | |          }t          j        ||           d S )Nr   )rW   r   )view_gettermake_dsr   r   r1   views         r   test_array_copyr:  k  s;     
		B;r??DHTr   z"forbidding copies requires numpy 2c                      ||          } | |          }t          j        t          d          5  t          j        |d           d d d            d S # 1 swxY w Y   d S )Nz#memory allocation cannot be avoidedrK  Fr6  )rc   r   r   rW   r   r7  r8  r   r1   r9  s        r   test_array_copy_falser=  s  s     
		B;r??D	z)N	O	O	O # #
E""""# # # # # # # # # # # # # # # # # #s   AAAc                      ||          } | |          }t          j        |d          j        t          j        d          k    sJ d S )Nr  r+   )rW   r   r,   r<  s        r   test_array_dtyper?    sQ    			B;r??D8D'''-&1A1AAAAAAAr   c                      ||d          } | |          }t          |d         t          t          f          sJ t          j        |          j        dk    sJ d S )Nr#   r  )r   r  r  rW   r   r=   r<  s        r   test_array_scalarrA    sc    	b	)	)	)B;r??Dd2h-----8D>>2%%%%%%r   c                 t     ||d          } | |          }t          j        |          j        dk    sJ d S )Nr   rL   r  )rW   r   r=   r<  s        r   test_array_ndrD    sE    	f	-	-	-B;r??D8D>>6))))))r   c                      ||d          } | |          }|j         t          j         t                    k    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ t          |          dk    sJ d S )NrC  r  rk   r   r   )r,   rW   r   ndimr=   rP   r=  r<  s        r   test_view_propertiesrG    s    	f	-	-	-B;r??D:&))))))9>>>>:9????t99>>>>>>r   )r   )nr7   r  r#  r  numpyrW   ra   rc   warningscommonr   r   
data_filesr   r}   r   r   r	   h5py._hl.baser
   r   r   r   h5py.h5py_warningsr   r   h5py._hl.selectionsr  
selectionsr  h5py.tests.commonr   r   r%   r9   rr   r   r   r  r(  rR  rj  r   r   r  r*   r   r  r  r  r  r  r  ro   r  r  r  r  r  r  r  r  r  r  r?  rS  rp  r  r  r  r  r  r  r%  r.  r?  rI  rR  rd   hdf5_version_tuplerx  r\  rz  r  r  r  r  rG  r  r  r  r  r  r  r  r  r  r  r  r)  r-  view_gettersCOPY_IF_NEEDEDr:  skipifr=  r?  rA  rD  rG  r#   r   r   <module>rU     s(     				 



                        * * * * * * % % % % % % % % % % 5 5 5 5 5 5 5 5         5 5 5 5 5 5        ! ! ! ! ! ! ! ! ! 3 3 3 3 3 3    (   P P P P P{ P P P(D, D, D, D, D,k D, D, D,LVF VF VF VF VF[ VF VF VFr9# 9# 9# 9# 9# 9# 9# 9#x%# %# %# %# %# %# %# %#P@6 @6 @6 @6 @6 @6 @6 @6F@D @D @D @D @D @D @D @DF#B #B #B #B #B+ #B #B #BLQ2 Q2 Q2 Q2 Q2; Q2 Q2 Q2h !HXqMXqM
CLZZT222C8T222C8T(((#.T(((#.T#)  & & &
8 8 8 8 8+ 8 8 8 6,,.HII)7 )7 )7 )7 )7[ )7 )7 JI)7X 6,,.HII$W $W $W $W $W+ $W $W JI$WN 5++-CDD6 6 6 6 6K 6 6 ED6: 6,,.EFF	B 	B 	B 	B 	B[ 	B 	B GF	B 9DL//1KLL	& 	& 	& 	& 	& 	& 	& ML	& <t|224QRR) ) ) ) ); ) ) SR) = 335STTn0 n0 n0 n0 n0K n0 n0 UTn0bi- i- i- i- i-; i- i- i-X): ): ): ): ):[ ): ): ):X2 2 2 2 2[ 2 2 2:"M "M "M "M "M "M "M "MLA4 A4 A4 A4 A4 A4 A4 A4H0 0 0 0 0 0 0 0&. . . . .k . . ..    {   *P4 P4 P4 P4 P4+ P4 P4 P4fd@ d@ d@ d@ d@; d@ d@ d@N: : : : :; : : :$J J J J J{ J J J4D D D D D D D D6C C C C C[ C C C$2 2 2 2 2K 2 2 2: ))L#z18 *   
-G -G -G -G -G[ -G -G -G`? ? ? ? ? ? ? ?,9 9 9 9 9 9 9 9M, M, M, M, M,{ M, M, M,`8 8 8 8 8+ 8 8 8   8 t|.*< r/;>p4<CbepCp[] ]" "] ]":  7 7 7J J J# # #) ) )
= = =
. . .> > >,+. +. +. +. +.k +. +. +.Z. . . . . . . ..K K K K    {&&		+	+V4		'	$	$i0	 	,++ ' 	 	 0&88d$!788   98 F"/    # # 	 
# B B B & & & * * *     r   