
    d                    	   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  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&ej'        (                    de)dfej*        dfej+        dfe,dfej-        dfej.        df ej/        dd !          d"f ej/        d#d !          d"f ej/        d$          d"f ej/        d#$          d"f ej/                    d"fg          d%             Z0 G d& d'e          Z1 e
j2        d(ej3        j4        vd)           G d* d+e                      Z5 e
j2        d(ej3        j4        vd)           G d, d-e                      Z6 e
j2        d.ej3        j4        vd/           G d0 d1e                      Z7 e
j2        d2ej3        j4        vd3           G d4 d5e                      Z8 e
j2        d6ej3        j4        vd7           G d8 d9e                      Z9 e
j2        d:ej3        j4        vd;           G d< d=e                      Z: e
j2        d>ej3        j4        vd?           G d@ dAe                      Z; G dB dCe          Z< G dD dEe          Z= G dF dGe          Z> G dH dIe          Z? G dJ dKe          Z@ G dL dMe          ZA G dN dOe          ZB G dP dQe          ZC G dR dSe          ZD G dT dUe          ZE G dV dWe          ZF G dX dYe          ZG G dZ d[e          ZH G d\ d]e          ZI G d^ d_e          ZJej'        K                    ej        jL        d`k    dab          ZM G dc dde          ZN G de dfe          ZO G dg dhe          ZP G di dje          ZQ G dk dle          ZR e
jS        ej        jL        dmk    dn          do             ZT e
jS        ej        jL        dpk    pej        jL        dqk    oej        jL        drk     ds          dt             ZUdu ZVdv ZWdw ZXdx ZYdy ZZdz Z[ej'        \                    ej        jL        d{k     d|b          d}             Z]d~ Z^ G d de          Z_ G d de          Z`d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)versionc                       e Zd Zd Zd ZdS )BaseDatasetc                 T    t          |                                 d          | _        d S )Nw)r   mktempfselfs    7lib/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S )TestReprz5
        Feature: repr(Dataset) behaves sensibly
    c                    | j                             dd          }|                     t          |          t                     | j                                          |                     t          |          t                     dS )z( repr() works on live and dead datasets foo   N)r   create_datasetassertIsInstancereprstrr   r   dss     r   test_repr_openzTestRepr.test_repr_open4   sf    V""5$//d2hh,,,d2hh,,,,,r   N)r   r    r!   __doc__r/   r"   r   r   r$   r$   /   s-         - - - - -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_scalarB   s7    v$$UB//R(((((r   c                 r    | j                             dd          }|                     |j        d           dS )z Create a size-1 dataset r&   r   Nr4   r7   s     r   test_create_simplez"TestCreateShape.test_create_simpleG   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   r;   Nr4   r7   s     r   test_create_integerz#TestCreateShape.test_create_integerL   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&   ?   rB   bar   
   <   Nr   r)   r5   r6   sizer7   s     r   test_create_extendedz$TestCreateShape.test_create_extendedQ   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 )r@   r&   rB   rA   rC   rD   rG   NrH   r7   s     r   test_create_integer_extendedz,TestCreateShape.test_create_integer_extendedZ   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&   rA   z=f4Nr   r)   r5   dtypenpr7   s     r   test_default_dtypez"TestCreateShape.test_default_dtypec   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_shapeh   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 )rN   r&   rA   rP   )ppc64lez(Storage of long double deactivated on %sN)
r   r)   rQ   
longdoubleplatformmachinepytestxfailr5   rP   r7   s     r   test_long_doublez TestCreateShape.test_long_doublem   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 )rN   r&   rA   ra   rY   N)r   r)   rQ   rP   r5   r7   s     r   test_complex256zTestCreateShape.test_complex256t   s[     v$$UE+-8L+A+A % C CRXl%;%;<<<<<r   c                     | j                             dd          }|                     |j        d           | j                             dd          }|                     |j        d           d S )Ns   foor;   s   bar/baz)   r4   r   r8   dset2s      r   test_name_byteszTestCreateShape.test_name_bytes{   sf    v$$VT22T***%%j$77d+++++r   N)r   r    r!   r0   r9   r<   r>   rJ   rL   rR   rW   r`   r   skipIfhasattrrQ   rc   rh   r"   r   r   r2   r2   <   s         ) ) )
+ + +
+ + +
* * ** * *6 6 6
) ) )
4 4 4 RY772|,,,.IJJ= = KJ=, , , , ,r   r2   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rQ   onesr   r)   r5   r6   r   ro   r8   s      r   r9   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 rA   r   r&   rn   Nrp   rr   s      r   rJ   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rF   rF   z<i4)r6   rP   N)r   r)   r*   h5pyr	   
assertTruer-   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   rY   r&   rF      r6   ro   .N)rQ   aranger   r)   r5   r6   assertArrayEqualreshaperr   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)rU   
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   r8   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r8   r   s    r   check_vlen_asciiz?TestCreateData.test_create_bytestring.<locals>.check_vlen_ascii   s&      s~d CCCCCr   a   abcrn   b   defcdrY   Nr   r)   rQ   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   S3rY   rn   r|   r   )r   r)   rQ   r   r   r   r   r7   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   abcrn   r   defr   r   rY   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   U3rY   rn   )rU   rV   r   r)   rQ   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   rY   )r   r)   rw   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   rY   rn   )r   r)   rv   Emptyrw   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 )NrC   r(   r|   r}   )rU   r   r   r)   rQ   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!   r0   r9   rJ   rx   r   r   r   r   r   r   r   r   r   r   r"   r   r   rl   rl      s         1 1 11 1 12 2 2@ @ @$ $ $
, , ,	 	 	= = =  T T T> > >> > >F F F F Fr   rl   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
S )TestReadDirectlyzI
        Feature: Read data directly from Dataset into a Numpy array
    +source_shape,dest_shape,source_sel,dest_seld   r   rF   2   rG   F   Z   Nrz   rF      r   r         	   rE   re   rE   r|   c                 |   t          j        t          |          d                              |          }|                    d||          }t          j        |dd          }|                                }	||         |	|<   |                    |||           t           j        	                    ||	           d S )Nint64rY   r8   rn   )
rQ   r~   r   r   r)   fullcopyread_directtestingassert_array_equal)
r   writable_filesource_shape
dest_shape
source_seldest_selsource_valuesr8   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 )Nr8   rF   rF   r   rY   rn   )r)   rQ   r~   rq   r   r   r   r   r   r8   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   rY   r   r   rF   r   rG   )r)   rQ   rq   r^   raisesrV   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 Nr8   r   r   rY      r)   rQ   rq   r^   r   rV   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 Nr8   ru   r   rY   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/)r   r    r!   r0   r^   markparametrizerQ   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   rF   r   rG   r   r   Nr   r   r   r   r   re   rE   r|   c                 b   |                     d|dd          }t          j        t          |                                        |          }t          j        |dd          }||         ||<   |                    |||           t          j                            |d d          |           d S )Nr8   int32r   rP   	fillvaluerY   )	r)   rQ   r~   r   r   r   write_directr   r   )	r   r   r   r   r   r   r8   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)   r^   r   rV   r   rQ   rq   r   )r   r   r   s      r   r   zTestWriteDirectly.test_empty!  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)   rQ   rq   r^   r   rV   r   r   s       r   r   z"TestWriteDirectly.test_wrong_shape&  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!   r0   r^   r   r   rQ   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	   r5   r6   r7   s     r   test_createzTestCreateRequire.test_create9  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  r5   rf   s      r   test_create_existingz&TestCreateRequire.test_create_existing?  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&   rF   r   rC   r   bazs   bazNr  rf   s      r   test_create_1Dz TestCreateRequire.test_create_1DE  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   )rF   r(   Nr   r)   rU   rV   r  r   s    r   test_shape_conflictz%TestCreateRequire.test_shape_conflictS  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_grouprU   rV   r  r   s    r   test_type_conflictz$TestCreateRequire.test_type_conflictY  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  r7   s     r   test_dtype_conflictz%TestCreateRequire.test_dtype_conflict_  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  r5   rf   s      r   test_dtype_exactz"TestCreateRequire.test_dtype_exactf  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  r5   rP   rQ   rf   s      r   test_dtype_closez"TestCreateRequire.test_dtype_closem  sw     v$$UGT::&&ugt5&IIu%%%bhtnn55555r   N)r   r    r!   r0   r  r  r	  r  r  r  r  r  r"   r   r   r   r   3  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   r6   chunksNr   r)   r5   r   r7   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   rF   r  r   Nr!  r7   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rU   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)r6   maxshaper   Nr&  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  NrT   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r(  c                     | j                             ddd          }|                     |j        t                     |                     t          |j                  d           dS )z Auto-chunking of datasets r&   )r   r   Tr  re   N)r   r)   r*   r   tupler5   lenr7   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r6   rP   r   r;   Nr!  r7   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   r6  rF   r   N(         r   re   )r   r)   rQ   r   rw   allr7   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)rP   r   Nr   rP   r*  )r^   r   rV   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!   r0   r"  r$  r'  r+  r.  r2  r7  r=  rC  r"   r   r   r  r  v  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   g      @r   r   r   N)r   r)   r5   r7   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      @rG  N)r   r)   r5   r   assertNotIsInstancerQ   ndarrayr7   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)   r5   r   r7   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   i8r;   rY   r   r&   r   r   r(   N)rQ   rP   rq   r   r)   r5   r   assertAlmostEqual)r   dtvr8   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   Nr&  r7   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!   r0   rH  rL  rN  rU  rZ  r"   r   r   rE  rE    sn         ' ' '= = =, , ,
+ + +B B B B Br   rE  zdt,expected        utf-8r   encodingr   r   asciir^  c                 P    |                     dd|           }|j        |k    sJ d S )Nr&   r   rY   )r)   r   )rS  r   r   r8   s       r   test_get_unset_fill_valuerb    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   rY   N)	rQ   rP   r   r)   r5   r   r   rw   	committedr7   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!   r0   rj  r"   r   r   rd  rd    s-         8 8 8 8 8r   rd  gzipzDEFLATE is not installedc                   *    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   rz   rk  r   compressioncompression_optsNr   r)   r5   rq  rr  r7   s     r   	test_gzipzTestCreateGzip.test_gzip  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&   ro  rk  rq  r(   Nrs  r7   s     r   test_gzip_implicitz!TestCreateGzip.test_gzip_implicit  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&   ro  r   rv  rk  N)r   r)   r5   rq  rr  rv   _hldataset_LEGACY_GZIP_COMPRESSION_VALSr0  rU   r   )r   r8   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&   ro     rv  Nrk  rp  )rU   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!   r0   rt  rw  r}  r  r"   r   r   rm  rm    s]         3 3 33 3 3W W W7 7 7 7 7r   rm  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&   ro  )r   rp  rk  r   N)rv   ry  rz  r{  r0  r   r)   h5zFILTER_DEFLATEr5   rq  rr  )r   r|  r8   s      r   test_compression_numberz3TestCreateCompressionNumber.test_compression_number5  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&   ro  irv  NzInvalid filterr   zUnknown compression)rU   r   r   r)   assertInr,   	exceptionrv   ry  rz  r{  r0  
IndexErrorr  r  )r   er|  s      r   test_compression_number_invalidz;TestCreateCompressionNumber.test_compression_number_invalidA  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!   r0   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&   ro  r  rv  Nr   rC   )ro   rq  r"   )	r   r)   r5   rq  rr  rQ   r~   flushr   )r   r8   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&   ro  r  r(   rp  Nr&  r   s    r   test_lzf_exczTestCreateLZF.test_lzf_excm  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 	6r,  N)r   r    r!   r0   r  r  r"   r   r   r  r  V  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&   ro  r  )ec   rp  N)r   r)   r7   s     r   	test_szipzTestCreateSZIP.test_szip{  s-    v$$UH&6@ % B Br   N)r   r    r!   r0   r  r"   r   r   r  r  t  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&   ro  T)r  N)r   r)   rw   r  r7   s     r   test_shufflezTestCreateShuffle.test_shuffle  s8    v$$UHd$CC%%%%%r   N)r   r    r!   r0   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&   ro  T)r  N)r   r)   rw   r  r7   s     r   test_fletcher32z$TestCreateFletcher32.test_fletcher32  s8    v$$UH$FF(((((r   N)r   r    r!   r0   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&   ro  TrP   r  NrU   r   r   r)   floatr7   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&   ro  gr  Nr  r7   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&   ro  Tr  N)rU   rV   r   r)   boolr7   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 ||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   rF   g      ?r&   r  N.r)	precision)rQ   randomrandr   r)   r  r  filenamer   rv   r   r   r<  )r   scalefacr6   ranger  r8   r  r  s           r   
test_floatz TestCreateScaleOffset.test_float  s     R8^#INE*S0E9v$$UEH$UU +++ S	6?8S))6%=% 	hBH9<MNNN (--///////r   c                    d}d}t           j                            dd|z  dz
  |          }| j                            d|t
          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 r;  r  r   re   r   rI   r&   Tr  N.r  )rQ   r  randintr   r)   intr  r  r   rv   r   r   r   nbitsr6   r  r8   r  r  s          r   test_intzTestCreateScaleOffset.test_int  s     9$$QU
QU$CC v$$UE$$OO +++ S	6?8S))6%=%h11111r   c                    d}d}t           j                            dd|z  |          }| j                            d|t
          |          }|                     |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 r;  r  r   re   r  r&   r  .r  N)rQ   r  r  r   r)   r  rw   r  r  r   rv   r   r   r  s          r   test_int_with_minbitsz+TestCreateScaleOffset.test_int_with_minbits  s     9$$QU
$??v$$UE%$PP 	(B./// S	6?8S))6%=%h11111r   c                    d}d}t           j                            dd|dz   z  dz
  |          }| j                            d|t
          |          }|                     |j        dk               ||d	<   | j        j        }| j        	                                 t          j        |d
          | _        | j        d         d	         }||k                                    rJ dS )r  r;  r  r   re   r   r  r&   r  .r  N)rQ   r  r  r   r)   r  rw   r  r  r   rv   r   r<  r  s          r   test_int_with_minbits_lossyz1TestCreateScaleOffset.test_int_with_minbits_lossy  s     9$$Qeai(81(<5$IIv$$UE%$PP 	(B./// S	6?8S))6%=% (--///////r   N)r   r    r!   r0   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                   6    e 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        d	k    rt          j        |j                                                                                                                                                  }t          j        | j        j                  j                                        }	||	k    sJ dS dS )
z' Create and access an external dataset rE   r   r   r&   z	${ORIGIN}rP   externalefile_prefix.Nrbr   rF   r   )rQ   r  r   r   	UNLIMITEDr   r)   rP   r  openreadtobytesrv   r   hdf5_version_tuplepathlibPathr   get_access_plistget_efile_prefixdecodeas_posixr  parent)
r   r6   r  ext_filer  r8   fidcontentsr  r  s
             r   test_contentszTestExternal.test_contents  s    9##E** ;;==q#-01v$$UERZit$uuS	}((( (D!! 	"SxxzzH	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"8++------ <*h66"<(@(@(B(B(S(S(U(U(\(\(^(^__hhjjL\$&/229BBDDF6)))) 76 *)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        dk    rt'          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  r"   )rQ   r  r   ospathbasenamer   r  r   r)   rP   dirnamer  r  r  r  rv   r   r  r  r  r   r  r  r  r  r  r  )r   r6   r  r  r  r8   r  r  r  r  rg   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++------ <*h66"<(@(@(B(B(S(S(U(U(\(\(^(^__hhjjL\(++2;;==F6))))&&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_strH  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_pathM  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"   ).0rh  r  s     r   	<genexpr>z/TestExternal.test_iter_multi.<locals>.<genexpr>X  s.      EEq1t8T2EEEEEEr   poor  r  N)r   iterr  r   r)   r1  r  )r   Nr  r8   r  s       @r   test_iter_multizTestExternal.test_iter_multiS  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   rV   r   r  r   rU   r   r)   )r   r6   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	N)
r   r    r!   r0   r  r  r  r  r  r  r"   r   r   r  r    s         * * *4  <G G G
D D D' ' 'G G 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   r5   rg  rv   r   r   r   r   )r   r.   r   variabler   s        r   assert_string_typez!TestAutoCreate.assert_string_typet  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 thererh     as   bcyrY   zN)r   r  rv   r   r   rQ   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   rh  r   bcr  rY   r  N)	chrr   r  rv   r   r   rQ   r   r	  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 r  rh  F)r  r:  N)rQ   string_r   r  rv   r   r   r5   r   r   r   r-   s     r   test_string_fixedz TestAutoCreate.test_string_fixed  sx     j//sVC[DH$7%HHH))2244b99999r   N)T)r   r    r!   r0   r  r
  r  r  r"   r   r   r  r  o  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 )N   r   lollike_lol)r   r   )	rQ   r~   r   r   create_dataset_liker5   r6   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hondar;  T)ro   track_timesr   hyundaiibmFlenovo)r   r)   rQ   r~   assertNotEqualrv   h5gget_objinfo_idmtimer  r5   )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   r*  simr   N)r   r)   r  r5   r6   r*  )r   r-  r*  s      r   test_maxshapezTestCreateLike.test_maxshape  sn     %%gur%BB&,,UE::...)511111r   N)r   r    r!   r  r+  r1  r"   r   r   r  r    sD        + + +E E E2 2 2 2 2r   r  c                        e 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)   rU   rV   iter_chunksr7   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   r7  r   @   `   r   r   a   r   r)   slicer5   listr5  rQ   r   r   r8   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   )r7  r9  r8  r   r7  r   r9  r   r:  0   4   r9  r   r<  r?  s      r   test_2dzTestChunkIterator.test_2d  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   N)r   r    r!   r  r@  rE  r"   r   r   r3  r3    sI          
O O OU U U U Ur   r3  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&   ro  r   rG   r.  Nr   r)   assertIsNotr   r5   r*  r7   s     r   r  zTestResize.test_create  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&   r0  r   r.  NrC   rJ  r7   s     r   r	  zTestResize.test_create_1D  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&   ro  rI  r.  r   r   Nr   r)   r5   r6   resizer7   s     r   test_resizezTestResize.test_resize  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   r9  r.  r0  )rz   NrO  r7   s     r   test_resize_1DzTestResize.test_resize_1D  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&   ro  rI  r.  )r   r   N)r   r)   rU   	ExceptionrP  r7   s     r   test_resize_overzTestResize.test_resize_over  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&   ro  rI  N)r   r)   rU   rV   rP  r7   s     r   test_resize_nonchunkedz!TestResize.test_resize_nonchunked  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&   ro  rI  r.  r   r   axisrN  N)r   r)   rP  r5   r6   r7   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&   ro  rI  r.  r   re   rZ  N)r   r)   rU   r   rP  r7   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`  Nr.  N)r   r)   r5   r6   r*  r7   s     r   test_zero_dimzTestResize.test_zero_dim  sT    v$$UGj$IIW---
33333r   N)r   r    r!   r0   r  r	  rQ  rS  rV  rX  r\  r^  ra  r"   r   r   rG  rG    s         2 2 2/ / // / /, , ," " "" " "/ / /$ $ $4 4 4 4 4r   rG  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   |S10NrO   r7   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  rX  r&   re  N)rQ   rP   float16r   r)   r5   )r   	complex32r8   s      r   test_dtype_complex32zTestDtype.test_dtype_complex32#  s]     HsBJ/#rz1BCDD	v$$UD)<<Y/////r   N)r   r    r!   r0   rg  rk  r"   r   r   rc  rc    s<         7 7 7
0 0 0 0 0r   rc  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`  ro  N)r   r)   r5   r1  r7   s     r   test_lenzTestLen.test_len1  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Nrr  )	r   r)   r5   r6   sysmaxsizerU   OverflowErrorr1  r7   s     r   test_len_bigzTestLen.test_len_big6  s    v$$UM::]333;+%%""=11  D			               SYY000W-----s   !A==BBN)r   r    r!   r0   rp  rv  r"   r   r   rm  rm  +  s<         ) ) )
	. 	. 	. 	. 	.r   rm  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 rz   r   rY   r{   r&   rn   r|   N)	rQ   r~   r   r   r)   zipr5   r1  r   )r   ro   r8   rh  r  s        r   	test_iterzTestIter.test_iterH  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"   )r6   c                     g | ]}|S r"   r"   )r  rh  s     r   
<listcomp>z-TestIter.test_iter_scalar.<locals>.<listcomp>T  s    1Qr   N)r   r)   rU   rV   r7   s     r   test_iter_scalarzTestIter.test_iter_scalarP  s    v$$U"$55y)) 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAN)r   r    r!   r0   r{  r  r"   r   r   rx  rx  B  s<         ( ( (    r   rx  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`  rh  r   rY   N)rv   string_dtyper   r)   r   r   r5   rg  r   r   r   r   check_string_dtyperP   r^  r   rS  r.   r   string_infos        r   r
  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`     barrh  r   r   r   Nrv   r  r   r)   r5   asstrr  r   r   rS  
fill_valuer.   s       r   test_vlen_bytes_fillvaluez%TestStrings.test_vlen_bytes_fillvalueh  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 rh  r   rY   r\  N)rv   r  r   r)   r   r   r5   rg  r   r   r   r   r  rP   r^  r  s        r   r  zTestStrings.test_vlen_unicodeq  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árrh  r   r   r   r\  N)rv   r  r   r)   r5   encoder  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
        rf  rh  r   rY   rF   r_  N)rQ   rP   r   r)   r   r   r5   rg  rv   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_  rF   r]  r  rh  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]  rh  r   rY      cùr   r   re   r(   rE      UrF   S)rv   r  r   r)   r   r   r5   r   r   r   r  rQ   r   r   rU   rV   r   r   )r   rS  r.   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\  rF   r]  r  rh  r   r   r   N)	rv   r  r  r   r)   r5   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|U10rh  r   rY   N)rQ   rP   rU   rV   r   r)   r   rS  r.   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`  rh  r   rY      Hellor   N)rv   r  r   r)   r5   rg  bytesr   rS  r.   ro   outs        r   test_roundtrip_vlen_bytesz%TestStrings.test_roundtrip_vlen_bytes  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 rf  rh  r   rY   r  r   N)rQ   rP   r   r)   r5   rg  r  r  s        r   test_roundtrip_fixed_bytesz&TestStrings.test_roundtrip_fixed_bytes  s     XfV""3b"991ecBJ///d#####r   c                 L   t          j                    }| j                            dd|          }d}||d<   |                     |d         t
                     |                                d         }|                     |t                     |                     ||           d S )Nrh  r   rY      fàilter   )	rv   r  r   r)   r*   r  r  r,   r5   r  s        r   test_retrieve_vlen_unicodez&TestStrings.test_retrieve_vlen_unicode  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 )Nrh  r   rY   r  r   r_  ignorefiltelatin-1rF   r   )r   r)   rv   r  r  rU   UnicodeDecodeErrorr5   r$  r1  rQ   r   r   r   r   asarray)r   r.   ro   strwrap1r  s        r   
test_asstrzTestStrings.test_asstr  s   V""3T5F5H5H"II188G$$122 	 	1+C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'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   rh  r   rY   r  r\  r   r_  r  r   r  r   )rv   r  r   r)   rQ   r   r  r*   bytes_r  r,   r5   r$  r   r   r   r  s        r   test_asstr_fixedzTestStrings.test_asstr_fixed  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_  rh  r   rY   r  r   N)rv   r  r   r)   rU   UnicodeEncodeError)r   rS  r.   ro   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
        rh  r   rY   r  r  utf8r   N)	rv   r  r   r)   r  r  r5   rg  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_  rh  r   rY   zASCII stringr   N)rv   r  r   r)   r5   rg  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!   r0   r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"   r   r   r  r  W  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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  rY   r   test.N)rQ   rP   float64uint32uint8rK  fieldsr  r   rw   r<  r5   )r   rS  r  keyoutdatas        r   test_rtzTestCompound.test_rt0  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  rY   r  r   r  .)rQ   rP   r  r  rK  r  r  r6   r   r)   rw   r<  r5   )r   rS  r  r  r.   r  s         r   test_assignzTestCompound.test_assignD  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 )	Nrh  r  r  r  rY   r   r  r  )rQ   rP   r  rK  r  r  r   r   r   r  r   astyper1  )r   rS  r  r  dt_ints        r   test_fieldszTestCompound.test_fieldsU  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   N)r   r    r!   r0   r  r  r  r"   r   r   r  r  *  sK         8 8 8(8 8 8"!5 !5 !5 !5 !5r   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   r;   3int8rY   r   re   r|   r   )r(   r   rE   )r   r)   rQ   r   r   r-   s     r   test_write_listzTestSubarray.test_write_listz  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)   rQ   r   r   r   r-   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  y  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   rY  )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 rX  basetyperh  rB  rY   N)rv   
enum_dtypeEDICTr   r)   rP   check_enum_dtyper5   )r   rS  r.   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  r  rh  rB  rY   rY  )#   %   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   )	rv   r  r  r   r)   r5   r   rQ   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!   r0   r  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 )Nrh  r   rY   .)r   r)   r5   rP   rQ   rq   r   )r   rS  r8   ro   s       r   	_exectestzTestFloats._exectest  ss    v$$S&$;;R(((wvR(((S	d3i.....r   ri  zNumPy float16 support requiredc                 T    |                      t          j        d                     dS )z Mini-floats round trip ri  N)r  rQ   rP   r   s    r   	test_minizTestFloats.test_mini  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 ri  z<f2z<f4N)rj   rQ   r5   r   
IEEE_F16LErP   r   s    r   test_mini_mappingzTestFloats.test_mini_mapping  sg    2y!! 	DS^128E??CCCCCS^128E??CCCCCr   N)r   r    r!   r0   r  r   
skipUnlessrj   rQ   r  r  r"   r   r   r  r    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)   rv   r%  r&  r'  r(  r5   )r   r.   ds_mtimes      r   test_disable_track_timesz'TestTrackTimes.test_disable_track_times  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'   nullr  NrT   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r(  N)r   r    r!   r0   r  r	  r"   r   r   r  r    sA         & & &C C C C Cr   r  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 rh  r   Nr.  r  r   r   r  r   r   )NN)r   r)   r5   r6   rQ   r   r-   s     r   test_array_conversionz#TestZeroShape.test_array_conversion  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   rX  rh  r  r   rA  rY   .r"   N)r   r)   rQ   emptyr5   r6   rP   )r   rS  r.   r   s       r   test_readingzTestZeroShape.test_reading  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!   r0   r  r  r"   r   r   r  r    s<         	7 	7 	7	2 	2 	2 	2 	2r   r  )r   rF   rE   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'  rB  rh  rn   .)	r   r   rQ   r~   r   ro   r   r)   r8   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  rF   r   r   N)rQ   r   r8   	regionrefr   ro   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   )r8   r  rI   )r   r  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      ?rP  ro   rP      .r"   )r   r)   rv   h5screateSCALARselect_noneh5rr   DATASET_REGIONr   rQ   rP   
select_all)r   r.   sidr  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  rF   r   r   )rF      N)rQ   r   r8   r  r5   r6   	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!   r0   r   r  empty_regionref_xfailr  r-  r1  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 Nrh  r   r  rY   r   .rP  )r   r)   rQ   r~   r  r   r   r8   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 r6  )r   r)   rQ   r~   r5   r1  r  r7   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 r6  )r   r)   rQ   r~   r  r  r   r7  s      r   test_astype_wrapper_asarrayz&TestAstype.test_astype_wrapper_asarray3  sz    v$$S&$==IcNNS	jT**$777c29S#=#=#=>>>>>r   N)r   r    r!   r0   r8  r:  r<  r"   r   r   r4  r4  $  sK         ? ? ?6 6 6
? ? ? ? ?r   r4  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 )NrW  rh  r"   rY   r   rX  )rQ   rP   r   r)   r5   )r   rS  r8   s      r   test_scalar_compoundz'TestScalarCompound.test_scalar_compoundA  sY    Xzl##v$$S"B$77c"(3--88888r   N)r   r    r!   r0   r@  r"   r   r   r>  r>  :  s-         
9 9 9 9 9r   r>  c                   R    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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'   rY   r|   r   r   r  re   r   r(   )
rv   
vlen_dtyper  r   r)   rQ   r~   r   r   r   r  s      r   r  zTestVlen.test_intI  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 )NrD  r;   rY   vlen2r"   )rv   rE  r  r   r)   rP   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   rD  r;   rY   rG  r"   )	r  rv   rE  r   r)   r  r   r   rP   )r   rS  r.   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 )NrD  r4  rY   gffffff?333333?r   r   )rM  re   r|   re   r  )皙?g?g @g@r(   r(   r   )rN  rM  皙@)皙?rM  rO  r|   )
rv   rE  r  r   r)   rQ   r   r   r~   r   r  s      r   test_convertzTestVlen.test_converth  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 )NrD  )re   re   rY   r   r  r|   re   )	rv   rE  r  r   r)   rQ   r~   r   r   r  s      r   test_multidimzTestVlen.test_multidimy  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   rD  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.
        re  rY   )r"         @g      >@)g33333Y@gi@gfffffX@g      %g     r)r   re   r  r   )r"  rU  g      @r[  g      )r   ir   r   i'  r   r   r   re   r|   r(   g333333?rO  N)rv   rE  r   r)   rQ   r   rP   r  r   r  r   )r   np_dtdataset_namerS  r.   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 )Nri  rQ   rP   r`  r   rV  s     r   test_numpy_float16zTestVlen.test_numpy_float16  +    ##  '''''r   c                 X    t          j        d          }|                     |           d S )Nfloat32rb  rc  s     r   test_numpy_float32zTestVlen.test_numpy_float32  re  r   c                 X    t          j        d          }|                     |           d S )Nr  rb  rc  s     r   test_numpy_float64_from_dtypez&TestVlen.test_numpy_float64_from_dtype  re  r   c                 H    t           j        }|                     |           d S r   )rQ   r  r`  rc  s     r   test_numpy_float64_2zTestVlen.test_numpy_float64_2  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  rY   )TFTTFFFNre   r   z != nc2int8)re   r(   r   r   r   r|   r   )r   r)   rv   rE  rQ   r   r<  )r   rh  r  s      r   test_non_contiguous_arraysz#TestVlen.test_non_contiguous_arrays  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OeU$/&2I2IJJJH+++,,SSqS6ua46%=#q1v-..QQ46%=3C0Q0Q33Q30Q0QQQQQQr   N)rD  )r   r    r!   r  rH  rK  rQ  rS  r`  rd  rh  rj  rl  rq  r"   r   r   rB  rB  H  s        3 3 3$; ; ;
L L L3 3 3"< < <. . . .`( ( (( ( (( ( (( ( (R R R R Rr   rB  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   r.   p_lists      r   test_get_access_listz TestLowOpen.test_get_access_list  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 rh  r      xN)rv   h5pr&  DATASET_ACCESSr   r)   h5dr  r   r*   	DatasetID)r   daplr8   dsids       r   	test_daplzTestLowOpen.test_dapl  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!   rv  r  r"   r   r   rs  rs    s2        * * *
8 8 8 8 8r   rs  )r   rF   r   z#chunk info requires  HDF5 >= 1.10.5c            
      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  rB  ru   r  r6   r   rP   r   r  r   rF   r  )ior  rv   r   r)   seekr   get_num_chunksr  r0  rQ   r   unravel_indexget_chunk_infochunk_offsetfilter_maskbyte_offsetrI   get_chunk_info_by_coord)r  buffoutfinr.   joffsetsis           r   test_get_chunk_detailsr    sM    
'))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   r;  r|   )r   rF   rF   )r   rF   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  rB  ru   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  rI   )
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  rv   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 )Nr  r   rY   )r)   r6   r*  )r   r.   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   r  r  rY   r  )
r  r  rv   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   rh  r#  rY   )
rQ   iinfor   maxr)   uint64rP   r   r   r   )r   ro   r.   s      r   test_python_int_uint64r  3  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 )	Nro   )r   r  re   rY      )r   r|   re   r  )r   re   r(   .)r)   rQ   r  r  r  )r   r   blocks      r   test_setitem_fancy_indexingr  A  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  H  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  M  s    	 !:;;	<	< =x{<<<<<<= = = = = = = = = = = = = = = = = =r  )r   rF   r|   z>Appears you cannot pass an unknown filter id for HDF5 < 1.10.3c                     d}|                      ddt          j        |d          }t          |          |j        v sJ d S )N   ro   ru   T)r6   rP   rq  allow_unknown_filter)r)   rQ   r  r,   _filters)r   fake_filter_idr.   s      r   test_allow_unknown_filterr  R  sT     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   rh  )rF   r   )r   r(   r      rP    )r6   r   rP   rdcc_nbytesrdcc_w0rdcc_nslotsr   N)r  r  rP  r    0 q=
ףp?  )r6   rP   r  r  r  )r  r  r  )r  r  rv   r   r)   r   r  get_chunk_cache	get_cacher  r  )r  r  r  r.   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  rP   ro   r   gMbP?N)	r   r)   r  rQ   r  r  r  r<  nanmax)r   r6   r8   valdeltanvals         r   test_numpy_commutativez&TestCommutative.test_numpy_commutative{  s    
 v$$VU%*,).%*@ % B B
 ja!!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  rQ   r  r  )r   r6   r8   r  s       r   test_basetype_commutativez)TestCommutative.test_basetype_commutative  s~     v$$VU%*,).%*@ % B B
 Biit----t------r   N)r   r    r!   r0   r  r  r"   r   r   r  r  v  s<         8 8 80. . . . .r   r  c                       e Zd ZdZ ej        ej        dk     d          d             Z ej        ej        dk     d          d             Z	dS )TestVirtualPrefixz%
    Test setting virtual prefix
    )r   rF   re   z8Virtual prefix does not exist before HDF5 version 1.10.2r  c                 J   d}d}| j                             d|t          t          j        j        | |          }t          j        |j        	                                
                                                                                                          }||k    sJ d S )Nr  /path/to/virtualr  )rP   ro   virtual_prefix)r   r)   r  rQ   r  r  r  r  r   r  get_virtual_prefixr  r  )r   r6   r  r8   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  r5   r*   r	   r6   )r   r  r8   r  s       r   test_virtual_prefix_requirez-TestVirtualPrefix.test_virtual_prefix_require  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!   r0   r   ri   r   r  r  r  r"   r   r   r  r    s          RYw)J6RT T T9 9T T9 RYw)J6RT T T. .T T. . .r   r  )ar0   r  r  rs  numpyrQ   r\   r^   warningscommonr   r   
data_filesr   rv   r   r   r	   h5py._hl.baser
   r   r   r   h5py.h5py_warningsr   r   h5py._hl.selectionsry  
selectionsselr   r$   r2   rl   r   r   r   r  rE  r   r   r  r   r   r  rg  r  r  rb  rd  ri   filtersr  rm  r  r  r  r  r  r  r  r  r  r3  rG  rc  rm  rx  r  r  r  r  r  r  r  r_   r  r2  r  r4  r>  rB  rs  r   r  r  r  r  r  r  r  r  skipifr  r  r  r  r"   r   r   <module>r     s     				 



                        * * * * * * % % % % % % % % % % 5 5 5 5 5 5 5 5         5 5 5 5 5 5        ! ! ! ! ! ! ! ! !    (   
- 
- 
- 
- 
-{ 
- 
- 
-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." ." ." ." ." ." ." ."`%# %# %# %# %# %# %# %#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 !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`G `G `G `G `G; `G `G `GF): ): ): ): ):[ ): ): ):X2 2 2 2 2[ 2 2 2:U U U U U U U U8A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L5 L5 L5 L5 L5; L5 L5 L5^: : : : :; : : :$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FR FR FR FR FR{ FR FR FRR8 8 8 8 8+ 8 8 8  t|.*<46 6 6 68 t|.*< r/;>p4<CbepCp[] ]" "] ]":  7 7 7J J J# # #) ) )
= = =
 L#j0K   . .	 .> > >,+. +. +. +. +.k +. +. +.Z. . . . . . . . . .r   