
    jZ                        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
 ddlmZmZ ddlmZmZ ddlmZmZ ddlZddlmZmZmZmZmZ dd	lmZ d
dlmZ  G d de          Z G d de          Z G d de          Z G d de          Z  G d d          Z! G d d          Z" G d de          Z# G d de          Z$ G d de          Z% G d de          Z&ej'        (                    d e)dfej*        dfej+        dfe,d!fe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/ d0e                      Z6 ej2        d1ej3        j4        vd2           G d3 d4e                      Z7 ej2        d5ej3        j4        vd6           G d7 d8e                      Z8 ej2        d9ej3        j4        vd:           G d; d<e                      Z9 ej2        d=ej3        j4        vd>           G d? d@e                      Z: ej2        dAej3        j4        vdB           G dC dDe                      Z; G dE dFe          Z< G dG dHe          Z= G dI dJe          Z> G dK dLe          Z? G dM dNe          Z@ G dO dPe          ZA G dQ dRe          ZB G dS dTe          ZC G dU dVe          ZD G dW dXe          ZE G dY dZe          ZF G d[ d\e          ZG G d] d^e          ZH G d_ d`e          ZI G da dbe          ZJ G dc dde          ZK G de dfe          ZL G dg dhe          ZM G di dje          ZN G dk dle          ZOdm ZP ejQ        ejR        jS        dnk    pejR        jS        dok    oejR        jS        dpk     dq          dr             ZTds ZUdt ZVdu ZWdv ZXdw ZYdx ZZdy Z[dz Z\ G d{ d|e          Z] G d} d~e          Z^ddZ_ddZ`ej'        (                    dd e_fd e_fd e_fd e`fgg d          Zaedk     rdndZbej'        (                    ddebg          ead                         Zcej'        d                    edk     d          ead                         Zeead             Zfead             Zgead             Zhead             Ziej'        j                    d          d             Zkd Zld Zmd Znd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)ThreadPoolExecutor)FileDataset)is_empty_dataspaceproduct)h5fh5t   )utTestCaseNUMPY_RELEASE_VERSIONis_main_thread	make_name)get_data_file_path   )H5pyDeprecationWarningc                       e Zd Zd Zd ZdS )BaseDatasetc                 T    t          |                                 d          | _        d S )Nw)r   mktempfselfs    Z/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/h5py/tests/test_dataset.pysetUpzBaseDataset.setUp'   s    dkkmmS))    c                 J    | j         r| j                                          d S d S N)r   closer   s    r   tearDownzBaseDataset.tearDown*   s)    6 	FLLNNNNN	 	r   N)__name__
__module____qualname__r   r!    r   r   r   r   &   s2        * * *    r   r   c                   f    e Zd ZdZej        dk    rdndZd Zej	        j
        d             Zd ZdS )	TestReprz5
        Feature: repr(Dataset) behaves sensibly
    big><c                     t                      }| j                            |dd          }t          |          d| d| j         dk    sJ d S )N   int32dtypez<HDF5 dataset "z": shape (4,), type "i4">)r   r   create_datasetreprendian_markr   namedss      r   test_repr_basiczTestRepr.test_repr_basic5   s[    {{V""4W"==Bxx^T^^HX^^^^^^^^^r   c                     | j                             t                      dd          }| j                                          t	          |          dk    sJ dS )z( repr() works on live and dead datasets r,   f4r/   z<Closed HDF5 dataset>N)r   r2   r   r    r3   r   r7   s     r   test_repr_closedzTestRepr.test_repr_closed:   sQ     V""9;;D"AABxx2222222r   c                 |    | j                             d dd          }t          |          d| j         dk    sJ d S )Nr,   r.   r/   z-<HDF5 dataset (anonymous): shape (4,), type "r1   )r   r2   r3   r4   r;   s     r   test_repr_anonymouszTestRepr.test_repr_anonymousA   sJ    V""4W"==Bxxa4K[aaaaaaaaar   N)r"   r#   r$   __doc__sys	byteorderr4   r8   pytestmarkthread_unsafer<   r>   r%   r   r   r'   r'   /   s|          --##3K_ _ _
 [3 3 3b b b b b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d
 Z ej         eed           d          d             Zd Zd ZdS )TestCreateShapez@
        Feature: Datasets can be created from a shape only
    c                     | j                             t                      dd          }|                     |j        d           dS )z Create a scalar dataset r%   r:   r/   Nr   r2   r   assertEqualshaper   dsets     r   test_create_scalarz"TestCreateShape.test_create_scalarL   s@    v$$Y[["D$AAR(((((r   c                     | j                             t                      dd          }|                     |j        d           dS )z Create a size-1 dataset r
   r:   r/   NrH   rK   s     r   test_create_simplez"TestCreateShape.test_create_simpleQ   s@    v$$Y[[$d$CCT*****r   c                     | j                             t                      dd          }|                     |j        d           dS )z+ Create a size-1 dataset with integer shaper
   r:   r/   rO   NrH   rK   s     r   test_create_integerz#TestCreateShape.test_create_integerV   s@    v$$Y[[!4$@@T*****r   c                     | j                             t                      dd          }|                     |j        d           |                     |j        d           dS )z- Create an extended dataset with tuple shape ?   r:   r/   rU   Nr   r2   r   rI   rJ   sizerK   s     r   test_create_extended_1dz'TestCreateShape.test_create_extended_1d[   sX    v$$Y[[%t$DDU+++B'''''r   c                     | j                             t                      dd          }|                     |j        d           |                     |j        d           dS )z. Create an extended dataset with 2 dimensions )   
   r:   r/   <   NrV   rK   s     r   test_create_extended_2dz'TestCreateShape.test_create_extended_2da   sX    v$$Y[['$FFW---R)))))r   c                     | j                             t                      dd          }|                     |j        d           |                     |j        d           dS )z/ Create an extended dataset with integer shape rU   r:   r/   rT   NrV   rK   s     r   test_create_integer_extendedz,TestCreateShape.test_create_integer_extendedg   sX    v$$Y[["D$AAU+++B'''''r   c                     | j                             t                      dd          }|                     |j        t          j        d                     dS )) Confirm that the default dtype is float rT   r:   r/   z=f4Nr   r2   r   rI   r0   nprK   s     r   test_default_dtypez"TestCreateShape.test_default_dtypem   sH    v$$Y[[%t$DDRXe__55555r   c                     |                      t                    5  | j                            t	                                 ddd           dS # 1 swxY w Y   dS )z  Missing shape raises TypeError NassertRaises	TypeErrorr   r2   r   r   s    r   test_missing_shapez"TestCreateShape.test_missing_shaper   s    y)) 	/ 	/F!!)++...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   'AAAc                 0   | j                             t                      dt          j                  }t          j                    dv r(t          j        dt          j                    z             | 	                    |j
        t          j                   dS )ra   rT   r/   )ppc64lez(Storage of long double deactivated on %sN)r   r2   r   rc   
longdoubleplatformmachinerB   xfailrI   r0   rK   s     r   test_long_doublez TestCreateShape.test_long_doublew   sw    v$$Y[[%r}$MM,,LChFVFXFXXYYYR]33333r   
complex256zNo support for complex256c                     | j                             t                      dt          j        d                    }|                     |j        t          j        d                     dS )ra   rT   rq   r/   N)r   r2   r   rc   r0   rI   rK   s     r   test_complex256zTestCreateShape.test_complex256~   s_     v$$Y[[%+-8L+A+A % C CRXl%;%;<<<<<r   c                 f   | j                             t          d                              d          dd          }|                     |j        d           | j                             t          d                              d          dd          }|                     |j        d           d S )Nfooutf-8rO   r:   r/   z	bar{}/bazr   )r   r2   r   encoderI   rJ   )r   rL   dset2s      r   test_name_byteszTestCreateShape.test_name_bytes   s    v$$Yu%5%5%<%<W%E%EtSW$XXT***%%y'='=&E&Eg&N&NPT\`%aad+++++r   c                     t          j        t                    5  | j                            t                      d          }d d d            n# 1 swxY w Y   |j        t          j        d          k    sJ d S )N   r:   )rB   warnsr   r   r2   r   r0   rc   rK   s     r   test_no_dtypezTestCreateShape.test_no_dtype   s    \011 	< 	<6((d;;D	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< zRXd^^++++++s   (AAAN)r"   r#   r$   r?   rM   rP   rR   rX   r]   r_   rd   ri   rp   r   skipIfhasattrrc   rs   rz   r   r%   r   r   rF   rF   F   s         ) ) )
+ + +
+ + +
( ( (* * *( ( (6 6 6
/ / /
4 4 4 RY772|,,,.IJJ= = KJ=, , ,, , , , ,r   rF   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                            t	                      |          }|                     |j        |j                   dS )z- Create a scalar dataset from existing array r%   r   dataNrc   onesr   r2   r   rI   rJ   r   r   rL   s      r   rM   z!TestCreateData.test_create_scalar   sQ    wr3v$$Y[[t$<<TZ00000r   c                     t          j        dd          }| j                            t	                      |          }|                     |j        |j                   dS )z/ Create an extended dataset from existing data rT   r   r   Nr   r   s      r   test_create_extendedz#TestCreateData.test_create_extended   sQ    wuc""v$$Y[[t$<<TZ00000r   c                     t          d          }| j                            |dd          }|                     |t          j                   |                     || j        v            dS )z1 Create dataset with missing intermediate groups z/foo{}/bar/bazr[   r[   z<i4rJ   r0   N)r   r   r2   assertIsInstanceh5pyr   
assertTruer5   s      r   test_dataset_intermediate_groupz.TestCreateData.test_dataset_intermediate_group   sb    )**V""4xu"EEb$,///'''''r   c                    t          j        dd          }| j                            t	                      d|          }|                     |j        d           |                     |d         |                    d                     dS )z8 Create from existing data, and make it fit a new shape    r   r/   r[      rJ   r   .N)	rc   aranger   r2   r   rI   rJ   assertArrayEqualreshaper   s      r   test_reshapezTestCreateData.test_reshape   sz    y3'''v$$Y[[d$KK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)rg   
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   rL   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                             t          d          d                      | j                             t          d          ddg                      | j                             t          d          dgdgg                      | j                             t          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rL   r   s    r   check_vlen_asciiz?TestCreateData.test_create_bytestring.<locals>.check_vlen_ascii   s&      s~d CCCCCr   a   abcr   b   defcdr/   Nr   r2   r   rc   arrayobject)r   r   s   ` r   test_create_bytestringz%TestCreateData.test_create_bytestring   s   	D 	D 	D 	D 	D..y~~F.KKLLL..y~~VVDT.UUVVV..y~~fXPVxDX.YYZZZ..cNN66*:&!I!I!I / 
 
 	 	 	 	 	r   c                     | j                             t                      t          j        ddgd                    }|                     |t          j        d           d S )Nr   r   S3r/   r   r   r   )r   r2   r   rc   r   r   r	   r   rK   s     r   test_create_np_szTestCreateData.test_create_np_s   sX    v$$Y[[rx@PX\7]7]7]$^^T3>!<<<<<r   c           	           fd} | j                             t          d          d                      | j                             t          d          ddg                      | j                             t          d          dgdgg                      | j                             t          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   abcr   r   defr   r   r/   r   )r   r   s   ` r   test_create_stringsz"TestCreateData.test_create_strings   s   	C 	C 	C 	C 	C--inn5-IIJJJ--innE5>-RRSSS--innUGeWCU-VVWWW--cNN5%.!G!G!G . 
 
 	 	 	 	 	r   c                     |                      t                    5  | j                            t	                      t          j        ddgd                     d d d            d S # 1 swxY w Y   d S )Nr   r   U3r/   r   )rg   rh   r   r2   r   rc   r   r   s    r   test_create_np_uzTestCreateData.test_create_np_u   s    y)) 	\ 	\F!!)++BHff=MUY4Z4Z4Z![[[	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\ 	\s   ?A''A+.A+c                     t                      }| j                            |d           |                     t	          | j        |         j                             d S )Nr   r/   )r   r   r2   r   r   r   r   r6   s     r    test_empty_create_via_None_shapez/TestCreateData.test_empty_create_via_None_shape   sO    {{d#...*46$<?;;<<<<<r   c                     t                      }| j                            |t          j        d                     |                     t          | j        |         j                             d S )Nr   r/   r   )r   r   r2   r   Emptyr   r   r   r   s     r   !test_empty_create_via_Empty_classz0TestCreateData.test_empty_create_via_Empty_class   s\    {{d#)>)>)>???*46$<?;;<<<<<r   c                     |                      t                    5  | j                            t	                      dt          j        d                     d d d            d S # 1 swxY w Y   d S )Nr-   r   r   )rg   r   r   r2   r   rc   r   r   s    r   test_create_incompatible_dataz,TestCreateData.test_create_incompatible_data   s    z** 	L 	LF!!)++Qbill!KKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls   <A$$A(+A(N)r"   r#   r$   r?   rM   r   r   r   r   r   r   r   r   r   r   r   r   r%   r   r   r   r      s         1 1 11 1 1( ( (@ @ @$ $ $
, , ,	 	 	= = =  \ \ \= = =
= = =
L L L L Lr   r   c                      e Zd ZdZej                            dddej        dd         ej        dd         fddej        dd         ej        d	d
         fddej        d
dd
d
f         ej        d
d
d
df         fddej        dd
ddf         ej        d
d
         fg          d             Z	d Z
d Zd Zd Zd Zd
S )TestReadDirectlyzI
        Feature: Read data directly from Dataset into a Numpy array
    +source_shape,dest_shape,source_sel,dest_seld   r   r[   2   r\   F   Z   Nr   r[      r   r   r}      	   rZ   r   rZ   r   c                    t          j        t          |          d                              |          }|                    t                      ||          }t          j        |dd          }|                                }	||         |	|<   |                    |||           t           j	        
                    ||	           d S )Nint64r/   r   )rc   r   r   r   r2   r   fullcopyread_directtestingassert_array_equal)
r   writable_filesource_shape
dest_shape
source_seldest_selsource_valuesrL   arrexpecteds
             r   test_read_directz!TestReadDirectly.test_read_direct   s     	',"7"7wGGGOOP\]]++IKKM+ZZgj"G44488::*:6j(333

%%c844444r   c                 4   |                     t                      dt          j        dd                    }t          j        dd          }|                    |           t          j                            |t          j        dd                     d S )Nr[   r[   r   r/   r   )r2   r   rc   r   r   r   r   r   r   r   rL   r   s       r   test_no_selzTestReadDirectly.test_no_sel  s    ++IKKRYrY`EaEaEa+bbge7+++

%%c29Rw+G+G+GHHHHHr   c                 P   |                     t                      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 Nr   r/   r   r   r[   r   r\   )	r2   r   rc   r   rB   raisesrh   r   s_)r   r   
empty_dsetr   s       r   
test_emptyzTestReadDirectly.test_empty  s    "11)++W1MM
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                    |                     t                      dd          }t          j        d          }t	          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S Nr   r   r/      r2   r   rc   r   rB   r   rh   r   r   s       r   test_wrong_shapez!TestReadDirectly.test_wrong_shape  s    ++IKKw+OOgfoo]9%% 	" 	"S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"   A55A9<A9c                    |                     t                      dd          }t          j        dd          }t	          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S Nr   r   r/   F)orderr  r   s       r   test_not_c_contiguousz&TestReadDirectly.test_not_c_contiguous  s    ++IKK+QQghc***]9%% 	" 	"S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"   A77A;>A;c                    d}|                     t                      |t          j                  }t          j        |t          j                  }|                    |           t          j        dt          j                  }t          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )N)r   r   r/   )r      )	r2   r   rc   r   zerosr   rB   r   rh   )r   r   rJ   rL   r   arr2s         r   test_zero_lengthz!TestReadDirectly.test_zero_length  s    ++IKKbh+OOhuBH--- xrx000]9%% 	# 	#T"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   CC	C)r"   r#   r$   r?   rB   rC   parametrizerc   r   r   r   r   r  r  r  r%   r   r   r   r      s=         [5VRU1R4["%2,7FBE"R%L"%*5xssAAAvaaa"f>beArr1HoruQQQx8		
 5 5 5I I IC C C" " "" " "	# 	# 	# 	# 	#r   r   c                   z   e Zd ZdZej                            dddej        dd         ej        dd         fddej        dd         ej        d	d
         fddej        d
dd
d
f         ej        d
d
d
df         fddej        dd
ddf         ej        d
d
         fg          d             Z	d Z
d Zd Zd
S )TestWriteDirectlyz>
        Feature: Write Numpy array directly into Dataset
    r   r   r   r[   r   r\   r   r   Nr   r   r   r   r   r   rZ   r   c                 z   |                     t                      |dd          }t          j        t	          |                                        |          }t          j        |dd          }||         ||<   |                    |||           t          j        	                    |d d          |           d S )Nr.   r   r0   	fillvaluer/   )
r2   r   rc   r   r   r   r   write_directr   r   )	r   r   r   r   r   r   rL   r   r   s	            r   test_write_directz#TestWriteDirectly.test_write_direct1  s     ++IKK7^`+aai--..66|DD7:r999 _#z8444

%%d111gx88888r   c                 J   |                     t                      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   )	r2   r   rB   r   rh   r  rc   r   r   )r   r   r   s      r   r   zTestWriteDirectly.test_emptyA  s    "11)++W1MM
]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                    |                     t                      dd          }t          j        d          }t	          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S r   r2   r   rc   r   rB   r   rh   r  r   s       r   r  z"TestWriteDirectly.test_wrong_shapeF  s    ++IKKw+OOgfoo]9%% 	# 	#c"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#r  c                    |                     t                      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_contiguousL  s    ++IKK+QQghc***]9%% 	# 	#c"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#r	  )r"   r#   r$   r?   rB   rC   r  rc   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                   N    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S )TestCreateRequirezS
        Feature: Datasets can be created only if they don't exist in the file
    c                     | j                             t                      dd          }|                     |t                     |                     |j        d           dS )z& Create new dataset with no conflicts r   r   N)r   require_datasetr   r   r   rI   rJ   rK   s     r   test_createzTestCreateRequire.test_createY  sS    v%%ikk7C@@dG,,,W-----r   c                     t                      }| j                            |dd          }d|d<   | j                            |dd          }|                     ||           dS )z) require_dataset yields existing dataset r   r   {   r   r   Nr   r   r  rI   r   r6   rL   ry   s       r   test_create_existingz&TestCreateRequire.test_create_existing_  sb    {{v%%dGS99T
&&tWc::u%%%%%r   c                     t                      }| j                            |dd          }d|d<   | j                            |dd          }|                     ||           dS )z; require_dataset with integer shape yields existing datasetr[   r   r!  r   Nr#  r$  s       r   test_create_1D_integerz(TestCreateRequire.test_create_1D_integerg  sb    {{v%%dB44Q&&tR55u%%%%%r   c                     t                      }| j                            |dd          }d|d<   | j                            |dd          }|                     ||           d S )Nr   r   r!  r   r[   r#  r$  s       r   test_create_1D_tuplez&TestCreateRequire.test_create_1D_tupleo  sb    {{v%%dE377Q&&tR55u%%%%%r   c                     t                      }| j                            |dd          }d|d<   | j                            |                    d          dd          }|                     ||           d S )Nr[   r   r!  r   rv   r   )r   r   r  rx   rI   r$  s       r   test_create_1D_binaryz'TestCreateRequire.test_create_1D_binaryv  sn    {{v%%dB44Q&&t{{7';';UCHHu%%%%%r   c                     t                      }| j                            |dd           |                     t                    5  | j                            |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[   r-   Nr   r   r2   rg   rh   r  r   s     r   test_shape_conflictz%TestCreateRequire.test_shape_conflict}  s    {{dGS111y)) 	7 	7F""4#666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7   A//A36A3c                     t                      }| j                            |           |                     t                    5  | j                            |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   N)r   r   create_grouprg   rh   r  r   s     r   test_type_conflictz$TestCreateRequire.test_type_conflict  s    {{D!!!y)) 	7 	7F""4#666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   A--A14A1c                     t                      }| j                            |dd          }|                     t                    5  | j                            |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   S10Nr-  )r   r6   rL   s      r   test_dtype_conflictz%TestCreateRequire.test_dtype_conflict  s     {{v$$T7C88y)) 	9 	9F""4%888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9r/  c                     t                      }| j                            |dd          }d|d<   | j                            |ddd          }|                     ||           dS )z* require_dataset with exactly dtype match r   r   r!  r"  TexactN)r   r   r2   r  rI   r$  s       r   test_dtype_exactz"TestCreateRequire.test_dtype_exact  sg    {{v$$T7C88T
&&tWc&FFu%%%%%r   c                 &   t                      }| j                            |dd          }d|d<   | j                            |ddd          }|                     ||           |                     |j        t          j        d                     dS )	zJ require_dataset with convertible type succeeds (non-strict mode)
        r   i4í r"  i2Fr7  N)r   r   r2   r  rI   r0   rc   r$  s       r   test_dtype_closez"TestCreateRequire.test_dtype_close  s     {{v$$T7D99T
&&tWd%&HHu%%%bhtnn55555r   N)r"   r#   r$   r?   r  r%  r'  r)  r+  r.  r2  r5  r9  r=  r%   r   r   r  r  S  s         . . .& & && & && & && & &7 7 77 7 79 9 9& & &	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                     | j                             t                      ddd          }|                     |j        d           dS )z Create via chunks tuple r   r   r:   rJ   chunksr0   Nr   r2   r   rI   rB  rK   s     r   test_create_chunksz$TestCreateChunked.test_create_chunks  sC    v$$Y[[uTX$YYe,,,,,r   c                     | j                             t                      ddd          }|                     |j        d           dS )z Create via chunks integer r   r[   r:   rA  r   NrC  rK   s     r   test_create_chunks_integerz,TestCreateChunked.test_create_chunks_integer  sC    v$$Y[[rQU$VVe,,,,,r   c                     |                      t                    5  | j                            t	                      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:   rA  Nrg   r   r   r2   r   r   s    r   test_chunks_mismatchz&TestCreateChunked.test_chunks_mismatch  s    z** 	X 	XF!!)++VFRV!WWW	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X   +AAAc                     |                      t                    5  | j                            t	                      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   Fr:   )rJ   maxshaperB  r0   NrH  r   s    r   test_chunks_falsez#TestCreateChunked.test_chunks_false  s    z** 	d 	dF!!)++USQV^b!ccc	d 	d 	d 	d 	d 	d 	d 	d 	d 	d 	d 	d 	d 	d 	d 	d 	d 	d   ,AAAc                     |                      t                    5  | j                            t	                      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:   rA  Nrf   r   s    r   test_chunks_scalarz$TestCreateChunked.test_chunks_scalar  s    y)) 	S 	SF!!)++RT!RRR	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	SrJ  c                     | j                             t                      ddd          }|                     |j        t
                     |                     t          |j                  d           dS )z Auto-chunking of datasets )r   r   Tr:   rA  r   N)r   r2   r   r   rB  tuplerI   lenrK   s     r   test_auto_chunksz"TestCreateChunked.test_auto_chunks  sc    v$$Y[[	$VZ$[[dk5111T[))1-----r   c                     | j                             t                      ddd          }|                     |j        d           dS )z7 Auto-chunking with pathologically large element sizes r   
S100000000TrJ   r0   rB  rO   NrC  rK   s     r   test_auto_chunks_abusez(TestCreateChunked.test_auto_chunks_abuse  sC    v$$Y[[LY]$^^d+++++r   c                    | j                             t                      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   rY  r[   r
   N(         r   r   )r   r2   r   rc   r.   r   allrK   s     r   test_scalar_assignmentz(TestCreateChunked.test_scalar_assignment  s    v$$Y[[+-8K % I I Q2XtAqqq"H~344555 QtAw"}--... QqS	tAaCyB//00000r   c                 d   t                      }t          j        t          d          5 }| j                            |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S # 1 swxY w Y   dS )	z, Auto-chunking of empty datasets not allowedr   matchS100T)r0   rB  Nr   r0   rL  )r   rB   r   rh   r   r2   )r   r6   errs      r   test_auto_chunks_no_shapez+TestCreateChunked.test_auto_chunks_no_shape  sG   {{]9G444 	CF!!$fT!BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C ]9G444 	CF!!$fr!BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs#   AAA:B%%B),B)N)r"   r#   r$   r?   rD  rF  rI  rM  rQ  rU  rZ  r`  rg  r%   r   r   r?  r?    s         - - -
- - -
X X X
d d d
S S S
. . ., , ,
1 1 1 C C C C C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                             t                      ddd          }|                     |d         d           |                     |d         d           dS )z- Fill value is reflected in dataset contents r         @r:   r  r0   r   r   N)r   r2   r   rI   rK   s     r   test_create_fillvalz'TestCreateFillvalue.test_create_fillval  s^    v$$Y[[%3d$SSa#&&&a#&&&&&r   c                     | j                             t                      ddd          }|                     |j        d           |                     |j        t          j                   dS )z( Fill value is recoverable via property r   g      @r:   rl  N)r   r2   r   rI   r  assertNotIsInstancerc   ndarrayrK   s     r   test_propertyz!TestCreateFillvalue.test_property  s\    v$$Y[[%3d$SS---  <<<<<r   c                     | j                             t                      dd          }|                     |j        d           dS )z0 .fillvalue property works correctly if not set r   r:   r/   r   N)r   r2   r   rI   r  rK   s     r   test_property_nonez&TestCreateFillvalue.test_property_none  s@    v$$Y[[%t$DD+++++r   c                 ,   t          j        ddg          }t          j        d|          d         }| j                            t                      d||          }|                     |j        |           |                     |d         |           d	S )
z& Fill value works with compound types )r   r:   )r   i8rO   r/   r   r   r  r-   N)	rc   r0   r   r   r2   r   rI   r  assertAlmostEqual)r   dtvrL   s       r   test_compoundz!TestCreateFillvalue.test_compound  s    X{K011GD###A&v$$Y[[%rQ$OO+++tAw*****r   c                     |                      t                    5  | j                            t	                      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   i)r   r   *   r  NrH  rK   s     r   test_exczTestCreateFillvalue.test_exc
  s    z** 	B 	B6((e%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$   r?   rm  rq  rs  ry  r~  r%   r   r   ri  ri    sn         ' ' '= = =, , ,
+ + +B B B B Br   ri  c                       e Zd ZdZd Z ej        dej        j	        vd          d             Z
d Zd Zd Zd	 Zd
 Zd Zd ZdS )TestFillTimezI
        Feature: Datasets created with specified fill time property
    c                 j   | j                             t                      ddd          }|j                                        }|                     |                                t          j        j	                   |                     |d         d           |                     |d         d           dS )z Fill time default to IFSET r   r:   rk  )r  r   r   N
r   r2   r   r   get_create_plistrI   get_fill_timer   h5dFILL_TIME_IFSETr   rL   plists      r   test_fill_time_defaultz#TestFillTime.test_fill_time_default  s    v$$Y[[%$MM((**,,..0HIIIa#&&&a#&&&&&r   gzipDEFLATE is not installedc                 l   | j                             t                      dddd          }|j                                        }|                     |                                t          j        j	                   |                     |d         d           |                     |d         d           dS )	z5 Fill time is IFSET for compressed dataset (chunked) r   r:   r  rk  )compressionr  r   r   Nr  r  s      r   test_compressed_defaultz$TestFillTime.test_compressed_default  s     v$$Y[[%6/2 % 4 4((**,,..0HIIIa#&&&a#&&&&&r   c                 l   | j                             t                      dddd          }|j                                        }|                     |                                t          j        j	                   | 
                    |d         d           | 
                    |d         d           dS )	z Fill time set to NEVER r   r:   rk  neverr  	fill_timer   r   N)r   r2   r   r   r  rI   r  r   r  FILL_TIME_NEVERassertNotEqualr  s      r   test_fill_time_neverz!TestFillTime.test_fill_time_never)  s    v$$Y[[%/6 % 8 8((**,,..0HIIIDGS)))DGS)))))r   c                     | j                             t                      dddd          }|j                                        }|                     |                                t          j        j	                   dS )z# Fill time explicitly set to ALLOC r   r:   rk  allocr  N)
r   r2   r   r   r  rI   r  r   r  FILL_TIME_ALLOCr  s      r   test_fill_time_allocz!TestFillTime.test_fill_time_alloc3  sm    v$$Y[[%#/6 % 8 8((**,,..0HIIIIIr   c                     | j                             t                      ddddd          }|j                                        }|                     |                                t          j        j	                   dS )z# Fill time explicitly set to IFSET r   r:   rw   rk  ifset)rB  r  r  Nr  r  s      r   test_fill_time_ifsetz!TestFillTime.test_fill_time_ifset:  sp    v$$Y[[%dVY/6 % 8 8((**,,..0HIIIIIr   c                     |                      t                    5  | j                            t	                      ddd          }ddd           dS # 1 swxY w Y   dS )z2 Choice of fill_time is 'alloc', 'never', 'ifset' r   r:   fill_badr  NrH  rK   s     r   test_invalid_fill_timez#TestFillTime.test_invalid_fill_timeA  s    z** 	Y 	Y6((eTZ(XXD	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	YrJ  c                     |                      t                    5  | j                            t	                      ddd          }ddd           dS # 1 swxY w Y   dS )z fill_time must be a string r   r:   r   r  NrH  rK   s     r   test_non_str_fill_timez#TestFillTime.test_non_str_fill_timeF  s    z** 	P 	P6((eTQ(OOD	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	PrJ  c                    | j                             t                      dddd          }|j                                        }|                     |                                t          j        j	                   t          j        |dd         d                                          sJ |                    d           t          j        |dd         d                                          sJ dS )z= The resize dataset will be filled (by default fill value 0) rP  r:   r   r|   )rL  rB  N        )r   r2   r   r   r  rI   r  r   r  r  rc   iscloser_  resizer  s      r   #test_resize_chunk_fill_time_defaultz0TestFillTime.test_resize_chunk_fill_time_defaultK  s    v$$Y[[&$,1 % 3 3((**,,..0HIIIz$qqq'3''++-----Gz$qqq'3''++-------r   c           	         | j                             t                      dddddd          }|j                                        }|                     |                                t          j        j	                   t          j        |dd         d                                          rJ |                    d           t          j        |dd         d                                          rJ dS )	z$ The resize dataset won't be filled rP  r:   r   rk  r  r|   )rL  r  r  rB  N)r   r2   r   r   r  rI   r  r   r  r  rc   r  anyr  r  s      r   !test_resize_chunk_fill_time_neverz.TestFillTime.test_resize_chunk_fill_time_neverW  s    v$$Y[[&$/2g,1 % 3 3 ((**,,..0HIII:d111gs++//11111G:d111gs++//1111111r   N)r"   r#   r$   r?   r  r   r   r   filtersrx   r  r  r  r  r  r  r  r  r%   r   r   r  r    s         ' ' ' RYvT\002LMM' ' NM'* * *J J JJ J JY Y Y
P P P

. 
. 
.2 2 2 2 2r   r  zdt,expectedr  rv   r}   encodingr   r   asciir  c                 h    |                     t                      d|           }|j        |k    sJ d S )Nr   r/   )r2   r   r  )rw  r   r   rL   s       r   test_get_unset_fill_valuer  e  s;     ''	U"'EED>X%%%%%%r   c                       e Zd ZdZd ZdS )TestCreateNamedTypezC
        Feature: Datasets created from an existing named type
    c                    t          d          }t          j        d          | j        |<   | j        |         }| j                            t          d          d|          }|                     |j        t          j        d                     |                     |j                                        |j                   |                     |j                                        	                                           dS )z7 Named type object works and links the dataset to type typef8xr   r/   N)
r   rc   r0   r   r2   rI   r   r   r   	committed)r   r6   rw  rL   s       r   
test_namedzTestCreateNamedType.test_named~  s      x~~tVD\v$$Ys^^V2$FFRXd^^444))++RU333((**446677777r   N)r"   r#   r$   r?   r  r%   r   r   r  r  x  s-         8 8 8 8 8r   r  r  r  c                   l    e Zd ZdZd Zd Zej                            d          d             Z	d Z
dS )	TestCreateGzipz=
        Feature: Datasets created with gzip compression
    c                     | j                             t                      dddd          }|                     |j        d           |                     |j        d           dS )z# Create with explicit gzip options r   r   r:   r  r   r  compression_optsNr   r2   r   rI   r  r  rK   s     r   	test_gzipzTestCreateGzip.test_gzip  se    v$$Y[[(Df67 % 9 9)6222.22222r   c                     | j                             t                      ddd          }|                     |j        d           |                     |j        d           dS )z+ Create with implicit gzip level (level 4) r  r:   r  r  r-   Nr  rK   s     r   test_gzip_implicitz!TestCreateGzip.test_gzip_implicit  s\    v$$Y[[(Df$UU)6222.22222r   monkey-patchreasonc                 >   t                      }| j                            |ddd          }|                     |j        d           |                     |j        d           t          j        j        j	        }	 t                      t          j        j        _	        |                     t                    5  | j                            |ddd          }ddd           n# 1 swxY w Y   |t          j        j        _	        dS # |t          j        j        _	        w xY w)z. Create with gzip level by specifying integer r  r:   r   r  r  N)r   r   r2   rI   r  r  r   _hldataset_LEGACY_GZIP_COMPRESSION_VALSrS  rg   r   )r   r6   rL   original_compression_valss       r   test_gzip_numberzTestCreateGzip.test_gzip_number  sJ    {{v$$T8Tq$II)6222.222$(H$4$R!	W=BWWDH:"":.. R Rv,,T8Tq,QQR R R R R R R R R R R R R R R >WDH:::=VDH:VVVVs0   :<D 6C!D !C%%D (C%)D Dc                    t                      }|                     t          t          f          5  | j                            |ddd           ddd           n# 1 swxY w Y   |                     t                    5  | j                            |ddd           ddd           n# 1 swxY w Y   |                     t                    5  | j                            |dddd           ddd           dS # 1 swxY w Y   dS )	z= Illegal gzip level (explicit or implicit) raises ValueError r  r:      r  Nr  r  )r   rg   r   RuntimeErrorr   r2   r   s     r   test_gzip_exczTestCreateGzip.test_gzip_exc  s   {{
L9:: 	H 	HF!!$$B!GGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hz** 	H 	HF!!$$B!GGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hz** 	7 	7F!!$$F35 " 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s5   AA"A B++B/2B/ C==DDN)r"   r#   r$   r?   r  r  rB   rC   rD   r  r  r%   r   r   r  r    s}         3 3 33 3 3 [n55W W 65W	7 	7 	7 	7 	7r   r  c                       e Zd ZdZej                            d          d             Zej                            d          d             ZdS )TestCreateCompressionNumberz?
        Feature: Datasets created with a compression code
    r  r  c                    t           j        j        j        }	 t	                      t           j        j        _        | j                            ddt           j        j        d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 7ru   r  )r   r:   )r  r  r0   r  r   N)r   r  r  r  rS  r   r2   h5zFILTER_DEFLATErI   r  r  )r   r  rL   s      r   test_compression_numberz3TestCreateCompressionNumber.test_compression_number  s     %)H$4$R!	W=BWWDH:6((dhF]pt  }A(  B  BD=VDH::=VDH:VVVV)6222.22222s   AA? ?Bc                 x   |                      t                    5 }| j                            d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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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  ru   r  ir:   r  r0   NzInvalid filterr   zUnknown compression)rg   r   r   r2   assertInstr	exceptionr   r  r  r  rS  
IndexErrorr  r  )r   er  s      r   test_compression_number_invalidz;TestCreateCompressionNumber.test_compression_number_invalid  sb    z** 	QaF!!%t4!PPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q&AK(8(8999z** 	PaF!!%s$!OOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P+S-=-=>>>$(H$4$R!	W=BWWDH: "":.. h h%%eX48CZbf%gggh h h h h h h h h h h h h h h >WDH:::=VDH:VVVVsS   AA
A
B>>CC<F! .E>2F! >FF! FF! !F9N)	r"   r#   r$   r?   rB   rC   rD   r  r  r%   r   r   r  r    s          [n55
3 
3 65
3 [n55W W 65W W Wr   r  lzfzLZF is not installedc                   $    e Zd ZdZd Zd Zd ZdS )TestCreateLZF<
        Feature: Datasets created with LZF compression
    c                     | j                             t                      ddd          }|                     |j        d           |                     |j        d           dS )z( Create with explicit lzf (empty chunks)r  r  r:   r  Nr  rK   s     r   test_lzf_sparsezTestCreateLZF.test_lzf_sparse  s]    v$$Y[[(UY$ZZ)5111.55555r   c                 t   t                      }t          j        d          }| j                            ||d          }|                     |j        d           |                     |j        d           | j                                         | j        |         d         }| 	                    ||           dS )z% Create with explicit lzf (populated)r   r  )r   r  Nr%   )
r   rc   r   r   r2   rI   r  r  flushr   )r   r6   testdatarL   readdatas        r   test_lzf_densezTestCreateLZF.test_lzf_dense  s    {{9S>>v$$Te$LL)5111.5556$<#h11111r   c                     |                      t                    5  | j                            t	                      dddd           ddd           dS # 1 swxY w Y   dS )z& Giving lzf options raises ValueError r  r:   r  r-   r  NrH  r   s    r   test_lzf_exczTestCreateLZF.test_lzf_exc  s    z** 	6 	6F!!)++x534 " 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6rN  N)r"   r#   r$   r?   r  r  r  r%   r   r   r  r    sK         6 6 6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                 \    | j                             t                      dddd          }dS )z Create with explicit szip r  r:   r  )ec   r  N)r   r2   r   rK   s     r   	test_szipzTestCreateSZIP.test_szip
  s3    v$$Y[[(Df6@ % B Br   N)r"   r#   r$   r?   r  r%   r   r   r  r    s2         B B B B Br   r  shufflezSHUFFLE is not installedc                       e Zd ZdZd ZdS )TestCreateShufflez8
        Feature: Datasets can use shuffling filter
    c                     | j                             t                      ddd          }|                     |j                   dS )z Enable shuffle filter r  Tr:   )r  r0   N)r   r2   r   r   r  rK   s     r   test_shufflezTestCreateShuffle.test_shuffle  s?    v$$Y[[(DPT$UU%%%%%r   N)r"   r#   r$   r?   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                     | j                             t                      ddd          }|                     |j                   dS )z Enable fletcher32 filter r  Tr:   )r  r0   N)r   r2   r   r   r  rK   s     r   test_fletcher32z$TestCreateFletcher32.test_fletcher32#  s?    v$$Y[[(tSW$XX(((((r   N)r"   r#   r$   r?   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

    Note: loss of precision caused by scaleoffset only becomes visible
    when closing and reopening the File.
    Can't close/reopen the shared self.f in pytest-run-parallel.
    c                     |                      t                    5  | j                            t	                      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  Tr0   r  Nrg   r   r   r2   r   floatrK   s     r    test_float_fails_without_optionsz6TestCreateScaleOffset.test_float_fails_without_options2       z** 	_ 	_6((heY](^^D	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_ 	_   0AAAc                     |                      t                    5  | j                            t	                      dt
          d          }ddd           dS # 1 swxY w Y   dS )z# Check when scaleoffset is negetiver  gr  Nr  rK   s     r   test_non_integerz&TestCreateScaleOffset.test_non_integer8  r  r  c                     |                      t                    5  | j                            t	                      dt
          d          }ddd           dS # 1 swxY w Y   dS )z% Check when dtype is unsupported typer  Tr  N)rg   rh   r   r2   r   boolrK   s     r   test_unsupport_dtypez*TestCreateScaleOffset.test_unsupport_dtype>  s     y)) 	^ 	^6((hdX\(]]D	^ 	^ 	^ 	^ 	^ 	^ 	^ 	^ 	^ 	^ 	^ 	^ 	^ 	^ 	^ 	^ 	^ 	^r  c                    d}d}dd|z  z  }t          j        j        | dz
  |z  }|                                 }t	          j        |d          5 }|                    d|t           j        |          }|j        J ||d
<   d	d	d	           n# 1 swxY w Y   t	          j        |d          5 }|d         d
         }d	d	d	           n# 1 swxY w Y   | 	                    ||d| z             ||k    
                                rJ d	S )z2 Scaleoffset filter works for floating point data r-   r   i,  r   r[   g      ?r   ru   r  N.r)	precision)rc   randomrandr   r   r   r2   float64r  r   r_  )	r   scalefacrJ   ranger  fnamer   rL   r  s	            r   
test_floatz TestCreateScaleOffset.test_floatD  s    R8^#INE*S0E9Yuc"" 	!a##uBJH $  D #/// DI	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! Yuc"" 	%ax}H	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	hBH9<MNNN(--///////s$   2BBB-CCCc                    d}d}t           j                            dd|z  dz
  |t           j                  }|                                 }t          j        |d          5 }|                    d|t           j        d	
          }|j        J ||d<   ddd           n# 1 swxY w Y   t          j        |d          5 }|d         d         }ddd           n# 1 swxY w Y   | 	                    ||           dS )zB Scaleoffset filter works for integer data with default precision r^  r  r   r   r
   rW   r0   r   ru   Tr  N.r  )
rc   r  randintr   r   r   r   r2   r  r   r   nbitsrJ   r  r  r   rL   r  s           r   test_intzTestCreateScaleOffset.test_int^  sn    9$$QU
QU"($SSYuc"" 	!a##E5d#SSD#/// DI	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! Yuc"" 	%ax}H	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	h11111s$   !2BB#&B#?CC!Cc                    d}d}t           j                            dd|z  |t           j                  }|                                 }t          j        |d          5 }|                    d|t           j        |          }|                     |j	        dk               ||d	<   d
d
d
           n# 1 swxY w Y   t          j        |d          5 }|d         d	         }d
d
d
           n# 1 swxY w Y   | 
                    ||           d
S )D Scaleoffset filter works for integer data with specified precision r^  r  r   r   r  r   ru   r  .Nr  )rc   r  r  r   r   r   r   r2   r   r  r   r  s           r   test_int_with_minbitsz+TestCreateScaleOffset.test_int_with_minbitss  su    9$$QU
bh$OOYuc"" 	!a##E5e#TTDOOD,2333 DI	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! Yuc"" 	%ax}H	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	h11111s%   AB11B58B5C,,C03C0c                 2   d}d}t           j                            dd|dz   z  dz
  |t           j                  }|                                 }t          j        |d          5 }|                    d|t           j        |	          }|                     |j	        dk               ||d
<   ddd           n# 1 swxY w Y   t          j        |d          5 }|d         d
         }ddd           n# 1 swxY w Y   ||k    
                                rJ dS )r   r^  r  r   r   r
   r  r   ru   r  .Nr  )rc   r  r  r   r   r   r   r2   r   r  r_  r  s           r   test_int_with_minbits_lossyz1TestCreateScaleOffset.test_int_with_minbits_lossy  s    9$$Qeai(81(<5PRPX$YYYuc"" 	!a##E5e#TTDOOD,2333 DI	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! Yuc"" 	%ax}H	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% (--///////s%   $AB77B;>B;C22C69C6N)r"   r#   r$   r?   r  r
  r  r  r  r!  r#  r%   r   r   r  r  )  s         _ _ __ _ _^ ^ ^0 0 042 2 2*2 2 2(0 0 0 0 0r   r  c                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestExternalzB
        Feature: Datasets with the external storage property
    c                    d}t           j                            |          }|                                 }|dt          j        fg}| j                            t                      ||j        |d          }||d<   |j	        J t          |d          5 }|                                }ddd           n# 1 swxY w Y   ||                                k    sJ t          j        |j                                                                                                                                                  }t          j        | j        j                  j                                        }	||	k    sJ dS )z' Create and access an external dataset rZ   r   r   z	${ORIGIN}r0   externalefile_prefix.Nrb)rc   r  r   r   	UNLIMITEDr   r2   r   r0   r)  openreadtobytespathlibPathr   get_access_plistget_efile_prefixdecodeas_posixfilenameparent)
r   rJ   r  ext_filer)  rL   fidcontentsr*  r7  s
             r   test_contentszTestExternal.test_contents  s    9##E** ;;==q#-01v$$Y[[%x~X`oz${{S	}((( (D!! 	"SxxzzH	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"8++------|DG$<$<$>$>$O$O$Q$Q$X$X$Z$Z[[ddffdfo..5>>@@v%%%%%%s   B55B9<B9c           	         t                      }d}t          j                            |          }|                                 }t          j                            |          dt          j        fg}| j	        
                    |||j        |t          j                            |                    }||d<   |j        J t          |d          5 }|                                }ddd           n# 1 swxY w Y   ||                                k    sJ t#          j        |j                                                                                                                                                  }	t#          j        |          j                                        }
|	|
k    sJ | j	                            |||j        t          j                            |                    }|j        J |d         |k     dS )	z< Create and access an external dataset using an efile_prefixr'  r   r(  .Nr+  )r*  r%   )r   rc   r  r   ospathbasenamer   r,  r   r2   r0   dirnamer)  r-  r.  r/  r0  r1  r   r2  r3  r4  r5  r7  r  )r   r6   rJ   r  r8  r)  rL   r9  r:  r*  r7  ry   s               r   test_contents_efile_prefixz'TestExternal.test_contents_efile_prefix  s
   {{9##E** ;;==W%%h//CMBCv$$T5QYhjhohwhw  yA  iB  iB$  C  CS	}((( (D!! 	"SxxzzH	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"8++------ |DG$<$<$>$>$O$O$Q$Q$X$X$Z$Z[[ddffh''.7799v%%%%&&tUHNQSQXQ`Q`aiQjQj&kk~)))b	Xs   C11C58C5c                 ~    | j                             t                      d|                                 d           dS )z/ External argument may be a file name str only r'  r:   r)  r0   N)r   r2   r   r   r   s    r   test_name_strzTestExternal.test_name_str  s6     	ikk8dkkmmSWXXXXXr   c           	          | j                             t                      ddt          j        |                                                      dS )z0 External argument may be a file name path only r'  r:   )r)  N)r   r2   r   r0  r1  r   r   s    r   test_name_pathzTestExternal.test_name_path  sQ     	ikk8T'.|DKKMM'B'B 	 	D 	D 	D 	D 	Dr   c                    |                                  d}t          fdt          |          D                       }| j                            t                      d|d          }t          |j                  |k    sJ dS )z9 External argument may be an iterable of multiple tuples r   c              3   (   K   | ]}|d z  d fV  dS )  Nr%   ).0r  r8  s     r   	<genexpr>z/TestExternal.test_iter_multi.<locals>.<genexpr>  s.      EEq1t8T2EEEEEEr   r'  r:   rC  N)r   iterr  r   r2   r   rT  r)  )r   Nr)  rL   r8  s       @r   test_iter_multizTestExternal.test_iter_multi  s     ;;==EEEEE!HHEEEEEv$$Y[[(XUY$ZZ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 ]\\  }}|                     |          5  | j                            t                      ||d           ddd           n# 1 swxY w Y   ]dS )z" Test with invalid external lists r'  r   zh5f.UNLIMITEDr:   rC  N)	r   rh   r   r,  r   rg   r   r2   r   )r   rJ   r8  exc_typer)  s        r   test_invalidzTestExternal.test_invalid  sF    ;;== 
#1&1cm458+'8Q-)8Qq9:;(A789#
 
	Y 
	YHh ""8,, Y Y%%ikk58SW%XXXY Y Y Y Y Y Y Y Y Y Y Y Y Y Y
	Y 
	Ys   +C

C	C	c                     |                                  }d}d}| j                            t                      |d||          }|j        J |j        |k    sJ |j        |k    sJ dS )z$ Create expandable external dataset )   @   )NrT  r:   )rL  r)  N)r   r   r2   r   rB  rJ   rL  )r   r8  rJ   rL  exp_dsets        r   test_create_expandablez#TestExternal.test_create_expandable  s     ;;==6((KKx( ) 
 
 &&&~&&&& H,,,,,,r   N)r"   r#   r$   r?   r;  rA  rD  rF  rN  rQ  rV  r%   r   r   r%  r%    s         & & &0  :Y Y Y
D D D' ' 'Y Y Y$- - - - -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   rI   r  r   r	   r   r   r   )r   r7   r   variabler   s        r   assert_string_typez!TestAutoCreate.assert_string_type  s    enncDH$9:::... 	)&&(((((	) 	)((r   c                     t          d          }t          d          }t          d          }d| j        |<   |                     | j        |         t          j        j                   ddg| j        |<   |                     | j        |         t          j        j                   t          j        ddgt          j                  | j        |<   |                     | j        |         t          j        j                   dS )	z<Assigning byte strings produces a vlen string ASCII dataset r  yzs   Hello there   as   bcr/   N)	r   r   r[  r   r	   r   rc   r   object_r   r  r]  r^  s       r   test_vlen_byteszTestAutoCreate.test_vlen_bytes  s    cNNcNNcNN"q	q	48+>???5Mq	q	48+>???HdE]"*===q	q	48+>?????r   c                 "   t          d          }t          d          }t          d          }dt          d          z   | j        |<   |                     | j        |         t          j        j                   ddg| j        |<   |                     | j        |         t          j        j                   t          j        ddggt          j	                  | j        |<   |                     | j        |         t          j        j                   d	S )
z?Assigning unicode strings produces a vlen string UTF-8 dataset r  r]  r^  Hello there4   r   bcr/   N)
r   chrr   r[  r   r	   r   rc   r   r`  ra  s       r   test_vlen_unicodez TestAutoCreate.test_vlen_unicode%  s    cNNcNNcNN!CKK/q	q	48+=>>>$Kq	q	48+=>>> HsDk]"*===q	q	48+=>>>>>r   c                 @   t                      }t          j        d          | j        |<   | j        |         }|                     |t
          j        j        d           |                     |j	        
                                                                d           dS )zV Assignment of fixed-length byte string produces a fixed-length
        ascii dataset rd  F)rZ  r]  N)r   rc   bytes_r   r[  r   r	   r   rI   r   r   r   r5   s      r   test_string_fixedz TestAutoCreate.test_string_fixed5  s     {{y//tVD\DH$7%HHH))2244b99999r   N)T)r"   r#   r$   r?   r[  rb  rh  rk  r%   r   r   rX  rX  
  sb         ) ) ) )@ @ @? ? ? : : : : :r   rX  c                        e Zd Zd Zd Zd ZdS )TestCreateLikec                 t   t          d          }t          d          }t          j        d                              dd          | j        |<   | j                            || j        |                    | j        |         }|                     |j        d           |                     |j	        d            d S )Nr  r]  r  r}   r}   r}   )
r   rc   r   r   r   create_dataset_likerI   rJ   assertIsrB  )r   r  r]  dslikes       r   test_no_chunkszTestCreateLike.test_no_chunks@  s    cNNcNNIbMM))!Q//q	""1dfQi000v...fmT*****r   c                    t          d          }t          d          }t          d          }t          d          }| j                            |t          j        d          d          }|                     dt          j                            |j	                  j
                   | j                            ||          }|                     dt          j                            |j	                  j
                   | j                            |t          j        d          d	          }|                     dt          j                            |j	                  j
                   | j                            ||          }|                     dt          j                            |j	                  j
                   d S )
Nr  r]  r^  r   r^  T)r   track_timesr   F)r   r   r2   rc   r   r  r   h5gget_objinfo_idmtimerp  rI   )r   r  r]  r^  r   origsimilars          r   test_track_timeszTestCreateLike.test_track_timesJ  sd   cNNcNNcNNcNNv$$QRYr]]15 % 7 7Atx33DH==CDDD&,,Q55Atx33GK@@FGGGv$$QRYr]]16 % 8 8DH00::@AAA&,,Q55DH00==CDDDDDr   c                    | j                             t          d          ddd          }| j                             t          d          |          }|                     |j        d           |                     |j        d           dS )	z) Test when other.maxshape != other.shape r  r   r   r:   rL  r0   r]  r   N)r   r2   r   rp  rI   rJ   rL  )r   otherr{  s      r   test_maxshapezTestCreateLike.test_maxshape\  s}     %%innebPT%UU&,,Ys^^UCC...)511111r   N)r"   r#   r$   rs  r|  r  r%   r   r   rm  rm  ?  sD        + + +E E E$2 2 2 2 2r   rm  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestChunkIteratorc                     | j                             t                      dd          }|                     t                    5  |                                 d d d            d S # 1 swxY w Y   d S )Nr%   r:   r/   )r   r2   r   rg   rh   iter_chunksrK   s     r   rs  z TestChunkIterator.test_no_chunkse  s    v$$Y[["D$AAy)) 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A&&A*-A*c                 
   | j                             t                      ddd          }|                     t                    5  |                    t          dd          df           d d d            d S # 1 swxY w Y   d S )Nr       r:   rA     C   r   )r   r2   r   rg   r   r  slicerK   s     r   test_rank_mismatchz$TestChunkIterator.test_rank_mismatchj  s    v$$Y[[uTX$YYz** 	0 	0eBrllA.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   &A88A<?A<c           	      <   | j                             t                      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          |                     t          ddd          ft          ddd          ff}|                     t          |                    t          j        d d                             t          |                     t          d	dd          ff}|                     t          |                    t          j        d	                             t          |                     d S )Nr   r  r:   rB  r0   r   r  r
   rT  `   r   r   a   	r   r2   r   r  rI   listr  rc   r   r   rL   r   s      r   test_1dzTestChunkIterator.test_1do  s   v$$Y[[&d$SS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1R]]$uR1~~&78d..ruSbSz::;;T(^^LLL2b^^%'d..ruRy99::DNNKKKKKr   c                    | j                             t                      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          |                     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          j        d ddd f                             t          |                     t          d
dd          t          ddd          ft          d
dd          t          ddd          ff}|                     t          |                    t          j        d
ddf                             t          |                     d S )Nr   r   )r  rT  r:   r  r   r  r
   rT  r   r  0   4   r\  r   r  r  r  r  r  s      r   test_2dzTestChunkIterator.test_2d{  s   v$$Y[[)GSW$XX1b!__eAr1oo.1b!__eBQ//02r1uQA/2r1uRa0012r1uQA/2r1uRa0012sAaQ02sAb#q 1 12	
 	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1b!__eBA../1b!__eBQ//02r1uRQ//02r1uRa001	
 	d..ruSbSW~>>??hPPP2r1uRQ//02r1uRQ//0
 	d..ruR2X??@@$x..QQQQQr   c           	         | j                             t                      ddd          }t          ddd          t          ddd          ft          ddd          t          ddd          ft          ddd          t          ddd          ft          ddd          t          ddd          ff}t          dd          }|                     t          |                    ||f                    t          |                     d S )	Nro  r   r   r:   r  r   r-   r
   r}   )r   r2   r   r  rI   r  r  )r   rL   r   sels       r   test_2d_partial_slicez'TestChunkIterator.test_2d_partial_slice  s    v$$Y[[%T$RR1a^^U1a^^4!QNNE!QNN3!QNNE!QNN3!QNNE!QNN35 Aajjd..Sz::;;T(^^LLLLLr   N)r"   r#   r$   rs  r  r  r  r  r%   r   r   r  r  d  sj          
0 0 0

L 
L 
LR R R8M M M M Mr   r  c                   N    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S )
TestResizezF
        Feature: Datasets created with "maxshape" may be resized
    c                     | j                             t                      ddd          }|                     |j        d           |                     |j        d           dS )z  Create dataset with "maxshape" r  r   r\   r:   r~  Nr   r2   r   assertIsNotrB  rI   rL  rK   s     r   r  zTestResize.test_create  s[    v$$Y[[(XUY$ZZd+++11111r   c                     | j                             t                      ddd          }|                     |j        d           |                     |j        d           dS )zF Create dataset with "maxshape" using tuple shape and integer maxshaper  r   r:   r~  Nr  rK   s     r   %test_create_1D_integer_maxshape_tuplez0TestResize.test_create_1D_integer_maxshape_tuple  sZ    v$$Y[[%"D$QQd+++.....r   c                     | j                             t                      ddd          }|                     |j        d           dS )zH Create dataset with "maxshape" using integer shape and integer maxshaper   r:   r~  r  N)r   r2   r   rI   rL  rK   s     r   'test_create_1D_integer_maxshape_integerz2TestResize.test_create_1D_integer_maxshape_integer  sB    v$$Y[["r$NN.....r   c                 P   | j                             t                      ddd          }|                     |j        d           |                    d           |                     |j        d           |                    d           |                     |j        d           dS )z( Datasets may be resized up to maxshape r  r  r:   r~  r   r   Nr   r2   r   rI   rJ   r  rK   s     r   test_resizezTestResize.test_resize  s    v$$Y[[(XUY$ZZX...HX...HX.....r   c                     | j                             t                      ddd          }|                     |j        d           |                    d           |                     |j        d           dS )z> Datasets may be resized up to maxshape using integer maxshaper   r\  r:   r~  r  )r   Nr  rK   s     r   test_resize_1DzTestResize.test_resize_1D  sl    v$$Y[["r$NNU+++EU+++++r   c                     | j                             t                      ddd          }|                     t                    5  |                    d           ddd           dS # 1 swxY w Y   dS )z. Resizing past maxshape triggers an exception r  r  r:   r~  )r   r   N)r   r2   r   rg   	Exceptionr  rK   s     r   test_resize_overzTestResize.test_resize_over  s    v$$Y[[(XUY$ZZy)) 	" 	"KK!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   A((A,/A,c                     | j                             t                      dd          }|                     t                    5  |                    d           ddd           dS # 1 swxY w Y   dS )z/ Resizing non-chunked dataset raises TypeError r  r:   r/   r  N)r   r2   r   rg   rh   r  rK   s     r   test_resize_nonchunkedz!TestResize.test_resize_nonchunked  s    v$$Y[[($$GGy)) 	" 	"KK!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   A''A+.A+c                     | j                             t                      ddd          }|                    dd           |                     |j        d           d	S )
z Resize specified axis r  r  r:   r~  r   r
   axisr  N)r   r2   r   r  rI   rJ   rK   s     r   test_resize_axiszTestResize.test_resize_axis  sY    v$$Y[[(XUY$ZZBQX.....r   c                     | j                             t                      ddd          }|                     t                    5  |                    dd           ddd           dS # 1 swxY w Y   dS )	z  Illegal axis raises ValueError r  r  r:   r~  r   r   r  N)r   r2   r   rg   r   r  rK   s     r   test_axis_exczTestResize.test_axis_exc  s    v$$Y[[(XUY$ZZz** 	$ 	$KKK###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A**A.1A.c                     | j                             t                      ddd          }|                     |j        d           |                     |j        d           dS )z? Allow zero-length initial dims for unlimited axes (issue 111) )   r   )r  Nr:   r~  N)r   r2   r   rI   rJ   rL  rK   s     r   test_zero_dimzTestResize.test_zero_dim  s[    v$$Y[['JVZ$[[W---
33333r   N)r"   r#   r$   r?   r  r  r  r  r  r  r  r  r  r  r%   r   r   r  r    s         2 2 2/ / // / /
/ / /, , ," " "" " "/ / /$ $ $4 4 4 4 4r   r  c                       e Zd ZdZd Zd ZdS )	TestDtypezD
        Feature: Dataset dtype is available as .dtype property
    c                     | j                             t                      dd          }|                     |j        t          j        d                     dS )z Retrieve dtype from dataset r|   |S10Nrb   rK   s     r   
test_dtypezTestDtype.test_dtype  sG    v$$Y[[$??RXf%5%566666r   c                     t          j        dt           j        fdt           j        fg          }| j                            t                      d|          }|                     |j        |           dS )z7 Retrieve dtype from complex float16 dataset (gh-2156) r  r|  r|   N)rc   r0   float16r   r2   r   rI   )r   	complex32rL   s      r   test_dtype_complex32zTestDtype.test_dtype_complex32  sa     HsBJ/#rz1BCDD	v$$Y[[$	BBY/////r   N)r"   r#   r$   r?   r  r  r%   r   r   r  r    s<         7 7 7
0 0 0 0 0r   r  c                       e Zd ZdZd Zd ZdS )TestLenzG
        Feature: Size of first axis is available via Python's len
    c                     | j                             t                      dd          }|                     t	          |          d           dS )z Python len() (under 32 bits) )8  r  r:   r/   r  N)r   r2   r   rI   rT  rK   s     r   test_lenzTestLen.test_len  sD    v$$Y[[)4$HHTC(((((r   c                    | j                             t                      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:   r/   iNr  )
r   r2   r   rI   rJ   r@   maxsizerg   OverflowErrorrT  rK   s     r   test_len_bigzTestLen.test_len_big  s    v$$Y[[-t$LL]333;+%%""=11  D			               SYY000W-----s   /BBBN)r"   r#   r$   r?   r  r  r%   r   r   r  r    s<         ) ) )
	. 	. 	. 	. 	.r   r  c                       e Zd ZdZd Zd ZdS )TestIterz;
        Feature: Iterating over a dataset yields rows
    c                 J   t          j        dd                              d          }| j                            t                      |          }t          ||d          D ]>\  }}|                     t          |          d           | 	                    ||           ?d	S )
z& Iterating over a dataset yields rows r   r   r/   r   r   T)strictr   N)
rc   r   r   r   r2   r   ziprI   rT  r   )r   r   rL   r  r]  s        r   	test_iterzTestIter.test_iter  s    y3'''//88v$$Y[[t$<<d4000 	( 	(DAqSVVQ'''!!!Q''''	( 	(r   c                     | j                             t                      dd          }|                     t                    5  d |D              ddd           dS # 1 swxY w Y   dS )z0 Iterating over scalar dataset raises TypeError r%   r:   r   c                     g | ]}|S r%   r%   )rJ  r  s     r   
<listcomp>z-TestIter.test_iter_scalar.<locals>.<listcomp>$  s    1Qr   N)r   r2   r   rg   rh   rK   s     r   test_iter_scalarzTestIter.test_iter_scalar   s    v$$Y[[$$GGy)) 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA"%A"N)r"   r#   r$   r?   r  r  r%   r   r   r  r    s<         ( ( (    r   r  c                   x    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestStringszr
        Feature: Datasets created with vlen and fixed datatypes correctly
        translate to and from HDF5
    c                    t          j        d          }| j                            t	                      d|          }|j                                        }|                     t          |          t           j	        j
                   |                     |                                t           j	        j                   t          j        |j                  }|                     |j        d           dS )z3 Vlen bytes dataset maps to vlen ascii in the file r  r  r   r/   N)r   string_dtyper   r2   r   r   r   rI   r  r	   r   r   r   check_string_dtyper0   r  r   rw  r7   r   string_infos        r   rb  zTestStrings.test_vlen_bytes.  s    000V""9;;b"AAenncDH$9:::)<===-bh77-w77777r   c                 v   t          j        d          }d}| j                            t	                      d||          }|                     |d         |           |                     |                                d         |                                           |                     |j        |           dS )& Vlen bytes dataset handles fillvalue r  r     barr   r  r   N	r   r  r   r2   r   rI   asstrr4  r  r   rw  
fill_valuer7   s       r   test_vlen_bytes_fillvaluez%TestStrings.test_vlen_bytes_fillvalue8  s    000
V""9;;bJ"WWA
+++A
(9(9(;(;<<<z22222r   c                    t          j                    }| j                            t	                      d|          }|j                                        }|                     t          |          t           j	        j
                   |                     |                                t           j	        j                   t          j        |j                  }|                     |j        d           dS )z5 Vlen unicode dataset maps to vlen utf-8 in the file r   r/   rv   N)r   r  r   r2   r   r   r   rI   r  r	   r   r   r   r  r0   r  r  s        r   rh  zTestStrings.test_vlen_unicodeA  s      V""9;;b"AAenncDH$9:::);<<<-bh77-w77777r   c                    t          j                    }d}| j                            t	                      d||          }|                     |d         |                    d                     |                     |                                d         |           |                     |j        |                    d                     dS )( Vlen unicode dataset handles fillvalue    bárr   r  r   rv   N)	r   r  r   r2   r   rI   rx   r  r  r  s       r   test_vlen_unicode_fillvaluez'TestStrings.test_vlen_unicode_fillvalueK  s      
V""9;;bJ"WWA
 1 1' : :;;;A
333z'8'8'A'ABBBBBr   c                    t          j        d          }| j                            t	                      d|          }|j                                        }|                     t          |          t          j
        j                   |                     |                                           |                     |                                d           |                     |                                t          j
        j                   t          j        |j                  }|                     |j        d           |                     |j        d           dS )zK Fixed-length bytes dataset maps to fixed-length ascii in the file
        r  r   r/   r[   r  N)rc   r0   r   r2   r   r   r   rI   r  r   r	   r   assertFalser   r   r   r   r  r  r   r  s        r   test_fixed_asciizTestStrings.test_fixed_asciiT  s    XfV""9;;b"AAenncDH$9:::,,..///,,,)<===-bh77-w777+R00000r   c                 x   t          j        dd          }d}| j                            t	                      d||          }|                     |d         |           |                     |                                d         |                                           |                     |j        |           dS )	r  r  r[   r  r  r   r  r   Nr  r  s       r   test_fixed_bytes_fillvaluez&TestStrings.test_fixed_bytes_fillvalueb  s    ;;;
V""9;;bJ"WWA
+++A
(9(9(;(;<<<z22222r   c                 `   t          j        dd          }| j                            t	                      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 )Nrv   r}   r  r   r/      cùr   r
   r   r-   rZ      Ur[   S)r   r  r   r2   r   r   r   rI   r   r	   r   rx   rc   r   r   rg   rh   r   r   )r   rw  r7   r   ss        r   test_fixed_utf8zTestStrings.test_fixed_utf8k  s   :::V""9;;b"AA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                            t                      d||          }|                     |d         |           |                     |                                d         |                    d                     |                     |j	        |           dS )	r  rv   r[   r  r  r   r  r   N)
r   r  rx   r   r2   r   rI   r  r4  r  r  s       r   test_fixed_utf_8_fillvaluez&TestStrings.test_fixed_utf_8_fillvalue{  s    ;;;]]7++
V""9;;bJ"WWA
+++A
(9(9'(B(BCCCz22222r   c                     t          j        d          }|                     t                    5  | j                            t                      d|          }ddd           dS # 1 swxY w Y   dS )zA Fixed-length unicode datasets are unsupported (raise TypeError) z|U10r   r/   N)rc   r0   rg   rh   r   r2   r   r   rw  r7   s      r   test_fixed_unicodezTestStrings.test_fixed_unicode  s    Xfy)) 	F 	F&&y{{F"&EEB	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   *A&&A*-A*c                    t          j        d          }| j                            t	                      d|          }d}||d<   |d         }|                     t          |          t                     |                     ||           dS )zN writing and reading to vlen bytes dataset preserves type and content
        r  r  r   r/      Hellor   N)r   r  r   r2   r   rI   r  bytesr   rw  r7   r   outs        r   test_roundtrip_vlen_bytesz%TestStrings.test_roundtrip_vlen_bytes  s     000V""9;;b"AA1ecE***d#####r   c                 $   t          j        d          }| j                            t	                      d|          }d}||d<   |d         }|                     t          |          t           j                   |                     ||           dS )z[ Writing to and reading from fixed-length bytes dataset preserves
        type and content r  r   r/   r  r   N)rc   r0   r   r2   r   rI   r  rj  r  s        r   test_roundtrip_fixed_bytesz&TestStrings.test_roundtrip_fixed_bytes  s     XfV""9;;b"AA1ecBI...d#####r   c                 d   t          j                    }| j                            t	                      d|          }d}||d<   |                     |d         t                     |                                d         }|                     |t                     | 	                    ||           d S )Nr   r/      fàilter   )
r   r  r   r2   r   r   r   r  r  rI   r  s        r   test_retrieve_vlen_unicodez&TestStrings.test_retrieve_vlen_unicode  s      V""9;;R"@@1beU+++hhjjmc3'''d#####r   c                    | j                             t                      dt          j                              }d}||d<   |                    d          }|                     t                    5  |d          d d d            n# 1 swxY w Y   |                     |                    dd          d         d           | 	                    |                    d          d         |           |                     d	t          |                                                     t          j                            |                                d d
         t          j        |gt                               t          j                            t          j        |                                          d d
         t          j        |gt                               d S )Nr   r/   r  r   r  ignorefiltelatin-1r[   r
   )r   r2   r   r   r  r  rg   UnicodeDecodeErrorrI   r  rT  rc   r   r   r   r   asarray)r   r7   r   strwrap1s       r   
test_asstrzTestStrings.test_asstr  s   V""9;;T=N=P=P"QQ188G$$122 	 	QKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'844Q7AAA 	BHHY//2D999 	S__--- 	
%%HHJJrrNBHdV6:::	
 	
 	
 	
%%Jrxxzz""2A2&$v(F(F(F	
 	
 	
 	
 	
s   1	BB
B
c                 &   t          j        d          }| j                            t	                      d|          }d}t          j        |                    d          |          |d<   |                     |d         t
          j	                   |
                                d         }|                     |t                     |                     ||           |                     |
                    dd	          d         d
           |                     |
                    d          d         |           t
          j                            |
                                d d         t          j        |gt                                d S )Nr}   r   r   r/   r  rv   r   r  r
  r   r  r
   )r   r  r   r2   r   rc   r   rx   r   rj  r  r  rI   r  r   r   r   r  s        r   test_asstr_fixedzTestStrings.test_asstr_fixed  sW   a(((V""9;;R"@@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                            t	                      d|          }d}|                     t                    5  ||d<   ddd           dS # 1 swxY w Y   dS )zGEncoding error when writing a non-ASCII string to an ASCII vlen datasetr  r   r/   r  r   N)r   r  r   r2   r   rg   UnicodeEncodeError)r   rw  r7   r   s       r   test_unicode_write_errorz$TestStrings.test_unicode_write_error  s    w''V""9;;b"AA122 	 	BqE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A--A14A1c                 ^   t          j                    }| j                            t	                      d|          }dt          d          z                       d          }||d<   |d         }|                     t          |          t                     |                     ||           dS )zJ Writing valid utf-8 byte strings to a unicode vlen dataset is OK
        r   r/   rd  re  utf8r   N)
r   r  r   r2   r   rg  rx   rI   r  r   r  s        r   test_unicode_write_bytesz$TestStrings.test_unicode_write_bytes  s       V""9;;b"AAV,44V<<1ecE***d#####r   c                 @   t          j        d          }| j                            t	                      d|          }d}||d<   |d         }|                     t          |          t                     |                     ||                    d                     dS )z: Writing an ascii str to ascii vlen dataset is OK
        r  r   r/   zASCII stringr   N)	r   r  r   r2   r   rI   r  r   rx   r  s        r   test_vlen_bytes_write_ascii_strz+TestStrings.test_vlen_bytes_write_ascii_str  s     w''V""9;;b"AA1ecE***dkk'2233333r   N)r"   r#   r$   r?   rb  r  rh  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%   r   r   r  r  '  s&        
8 8 83 3 38 8 8C C C1 1 13 3 3\ \ \ 3 3 3F F F	$ 	$ 	$	$ 	$ 	$$ $ $
 
 
6
 
 
,  	$ 	$ 	$	4 	4 	4 	4 	4r   r  c                   *    e Zd ZdZd Zd Zd Zd ZdS )TestCompoundz:
        Feature: Compound types correctly round-trip
    c           
      Z   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  ||<   (t                      }|| j	        |<   | j	        |         d         }| 
                    t          j        ||k                         |                     |j        |j                   dS )z: Compound types are read back in correct order (issue 236)weightcputimewalltimeparents_offset	n_parentsstatusendpoint_typer  r/   r   .N)rc   r0   r  uint32uint8rp  fieldsr  r   r   r   r_  rI   )r   rw  r  keyr6   outdatas         r   test_rtzTestCompound.test_rt   s    X2:.'4("*5.	:)295&1-rx8< = = :e2...9 	: 	:CI,,U33c9HSMM{{t&,s#w(23344477777r   c                 D   t          j        dt           j        dffdt           j        fg          }t          j        d|          }|j        D ]3}t           j                            ||         j                  dz  ||<   4t                      }| j	        
                    |d|          }|j        D ]}||         ||<   | j	        |         d         }|                     t          j        ||k                         |                     |j        |j                   d S )	Nr  r   r$  r%  r/   rW   r   .)rc   r0   r  r'  rp  r(  r  rJ   r   r   r2   r   r_  rI   )r   rw  r  r)  r6   r7   r*  s          r   test_assignzTestCompound.test_assign  s   XBJ?3)2848 9 9 :e2...9 	M 	MCI,,(3-2E,FFLHSMM{{V""4b"999 	$ 	$CsmBsGG&,s#w(23344477777r   c                 P   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  ||<   (t                      }|| j        |<   | j        |         }t           j        	                    |                    ddg          d d          |ddg                    t           j        	                    |                    d          d d          |d                    t           j        	                    t          j
        |                    ddg                    |ddg                    t          j        dt           j        fg          }t           j        	                    t          j
        |                    dg          |          |dg                             |                     t          |                    d                    dk    sJ d S )Nr  r]  r^  r%  r/   r   r  )rc   r0   r  rp  r(  r  r   r   r   r   r  r.   astyperT  )r   rw  r  r)  r6   r7   dt_ints          r   test_fieldszTestCompound.test_fields'  s   X"*"*"*
   :e2...9 	: 	:CI,,U33c9HSMM{{tVD\ 	
%%IIsCj!!!!!$hSz&:	
 	
 	
 	
%%IIcNN111x}	
 	
 	
 	
%%Jryy#s,,--xc
/C	
 	
 	
 C?+,,

%%Jryy#''v666cUO""6**	
 	
 	
 299S>>""b((((((r   c                    t          j        dt          j        t           j                  fdt          j        t           j                  fg          }t          j        dt          j        |          fdt           j        fg          }t          j        t          dd          t           j                  t          j        t          dd	          t           j                  f}t          j        t          d
d          t           j                  t          j        t          dd          t           j                  f}t          j        t          j        ||g|          dft          j        |g|          dfg|          }t                      }|| j	        |<   | j	        |         }| 
                    ||d           d S )Nr   r   f1f2r
   r   r/   rZ   r   r[   r  r     r   F)check_alignment)rc   r0   r   
vlen_dtyper.   r   r   r  r   r   r   )r   dt_innerrw  inner1inner2r   r6   r  s           r   test_nested_compound_vlenz&TestCompound.test_nested_compound_vlenL  s   8c4?28#<#<= $/"(";";<> ? ? Xdoh778bh') * * (5A;;bh777(5A;;bh7779 (5R==999(5R==999; x"(FF#38DDDaH6((;;;Q?A " " " {{tfTl 	c4?????r   N)r"   r#   r$   r?   r+  r.  r2  r<  r%   r   r   r  r    s`         8 8 8*8 8 8$#) #) #)J@ @ @ @ @r   r  c                       e Zd Zd Zd ZdS )TestSubarrayc                 &   | j                             t                      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 NrO   3int8r/   r
   r   r   r   )r-   r}   rZ   )r   r2   r   rc   r   r   r;   s     r   test_write_listzTestSubarray.test_write_listg  s    V""9;;G"DD		1

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

%%beiii[99999r   c                 n   | j                             t                      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   r2   r   rc   r   r   r   r;   s     r   test_write_arrayzTestSubarray.test_write_arrayo  s    V""9;;G"DD##1

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

%%beiii[99999r   N)r"   r#   r$   rC  rE  r%   r   r   r>  r>  f  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
   r}  )REDGREENBLUEc                     t          j        | j        d          }| j                            t                      d|          }|j        }t          j        |          }|                     || j                   dS )z= Enum datasets can be created and type correctly round-trips r|  basetyper  r/   N)	r   
enum_dtypeEDICTr   r2   r   r0   check_enum_dtyperI   )r   rw  r7   dt2dict2s        r   r  zTestEnum.test_create  sm    _TZ#666V""9;;
""EEh%c**
+++++r   c                 J   t          j        | j        d          }| j                            t                      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;  rL  r  r/   r}  )#   %   r
   N)dr
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   )
r   rN  rO  r   r2   r   rI   r   rc   r   r  s      r   test_readwritezTestEnum.test_readwrite  s    _TZ$777V""9;;
""EE6
1aaa4FR(((bAAAh4(H(H(HIIIIIr   N)r"   r#   r$   r?   rO  r  rV  r%   r   r   rG  rG  x  sR          2..E, , ,J J J J Jr   rG  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                             t                      d|          }|                     |j        |           t          j        d|          }||d<   |                     |d         |           d S )Nr   r/   .)r   r2   r   rI   r0   rc   r   r   )r   rw  rL   r   s       r   	_exectestzTestFloats._exectest  sw    v$$Y[[&$CCR(((wvR(((S	d3i.....r   r  zNumPy float16 support requiredc                 T    |                      t          j        d                     dS )z Mini-floats round trip r  N)rZ  rc   r0   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 r  z<f2z<f4N)r   rc   rI   r	   
IEEE_F16LEr0   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$   r?   rZ  r   
skipUnlessr   rc   r\  r_  r%   r   r   rX  rX    sy         / / / R]772y))+KLL, , ML,
D D D D Dr   rX  c                       e Zd ZdZd Zd ZdS )TestTrackTimesz"
        Feature: track_times
    c                     | j                             t                      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,   Fr:   ru  r0   r   N)	r   r2   r   r   rv  rw  rx  ry  rI   )r   r7   ds_mtimes      r   test_disable_track_timesz'TestTrackTimes.test_disable_track_times  sZ    V""9;;%t"TT8''//5H%%%%%r   c                     |                      t                    5  | j                            t	                      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,   nullr:   rd  Nrf   r   s    r   test_invalid_track_timesz'TestTrackTimes.test_invalid_track_times  s    y)) 	U 	UF!!)++tt!TTT	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	UrJ  N)r"   r#   r$   r?   rf  ri  r%   r   r   rb  rb    sA         & & &U U U U Ur   rb  c                       e Zd ZdZd Zd ZdS )TestZeroShapez7
        Features of datasets with (0,)-shape axes
    c                 4   | j                             t          d          ddd          }|                     |j        t          j        |          j                   | j                             t          d          ddd          }|                     |j        t          j        |          j                   | j                             t          d	          d
dd          }|                     |j        t          j        |          j                   dS )z1 Empty datasets can be converted to NumPy arrays r  r   Nr:   r~  r]  r   r   r^  r"  )NN)r   r2   r   rI   rJ   rc   r   r;   s     r   test_array_conversionz#TestZeroShape.test_array_conversion  s    V""9S>>1t4"PP28B<<#5666V""9S>>4'QU"VV28B<<#5666V""9S>>6LX\"]]28B<<#566666r   c                    ddg}| j                             t                      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   r|  rm  r   re  r/   .r%   N)r   r2   r   rc   emptyrI   rJ   r0   )r   rw  r7   r   s       r   test_readingzTestZeroShape.test_reading  s    *%V""9;;B"QQ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$   r?   rn  rq  r%   r   r   rk  rk    s<         	7 	7 	7	2 	2 	2 	2 	2r   rk  c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )TestRegionRefsz3
        Various features of region references
    c                     t                               |            t          j        d                              d          | _        | j                            d| j                  | _        | j        | j        d<   d S )Ni'  r  r  r   .)	r   r   rc   r   r   r   r   r2   rL   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  rT  r[   r   r}   N)rc   r   rL   	regionrefr   r   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   )rL   rv  rW   )r   ry  r  s      r   test_empty_regionz TestRegionRefs.test_empty_region  s3    i!"1"%inx1}}}}}}r   c                 h   | j                             t                      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      ?r:   r   r0      .r%   )r   r2   r   r   h5screateSCALARselect_noneh5rr   DATASET_REGIONr   rc   r0   
select_all)r   r7   sidry  s       r   test_scalar_datasetz"TestRegionRefs.test_scalar_dataset  s    V""9;;S"EE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  rT  r[   r   r}   )r[      N)rc   r   rL   rv  rI   rJ   	selectionrw  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$   r?   r   rz  r|  r  r  r%   r   r   rs  rs    sn         # # #? ? ?  ! ! !G G G G Gr   rs  c                   $    e Zd ZdZd Zd Zd ZdS )
TestAstypez(.astype() wrapper & context manager
    c                    | j                             t                      dd          }t          j        d          |d<   |                    d          d d          }|                     |t          j        dd                     d S Nr   r<  r/   r   .r:   )r   r2   r   rc   r   r0  r   r   rL   r   s      r   test_astype_wrapperzTestAstype.test_astype_wrapper  sx    v$$Y[[&$EEIcNNS	kk$"c29S#=#=#=>>>>>r   c                     | j                             t                      dd          }t          j        d          |d<   |                     dt          |                    d                               d S r  )r   r2   r   rc   r   rI   rT  r0  rK   s     r   test_astype_wrapper_lenz"TestAstype.test_astype_wrapper_len  sc    v$$Y[[&$EEIcNNS	c$++d"3"34455555r   c                 ,   | j                             t                      dd          }t          j        d          |d<   t          j        |                    d          d          }|                     |t          j        dd                     d S r  )r   r2   r   rc   r   r  r0  r   r  s      r   test_astype_wrapper_asarrayz&TestAstype.test_astype_wrapper_asarray  s~    v$$Y[[&$EEIcNNS	jT**$777c29S#=#=#=>>>>>r   N)r"   r#   r$   r?   r  r  r  r%   r   r   r  r  
  sK         ? ? ?6 6 6
? ? ? ? ?r   r  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                            t	                      d|          }|                     |d         j        t          j        d                     d S )Nr{  r%   r/   r   r|  )rc   r0   r   r2   r   rI   )r   rw  rL   s      r   test_scalar_compoundz'TestScalarCompound.test_scalar_compound'  s]    Xzl##v$$Y[["B$??c"(3--88888r   N)r"   r#   r$   r?   r  r%   r   r   r  r     s-         
9 9 9 9 9r   r  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S )TestVlenc                    t          j        t                    }| j                            t                      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 )
Nr,   r/   r   r   r
   rB  r   r}   r-   )r   r8  intr   r2   r   rc   r   r   r   r   r  s      r   r  zTestVlen.test_int/  s   _S!!V""9;;B"??	!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                            t          d          d|          }| j                            t          d          d|d         j                   d S )Nr  rO   r/   r]  r%   )r   r8  r  r   r2   r   r0   r  s      r   test_reuse_from_otherzTestVlen.test_reuse_from_otherA  s_    _S!!V""9S>>4r"BBinndBrFLAAAAAr   c                    dt           fdt          j        t                     fg}|                                 }t          j        |d          5 }|                    dd|           d d d            n# 1 swxY w Y   t          j        |d          5 }|                    dd|d         d         d         j                   d d d            d S # 1 swxY w Y   d S )	Nr   r   r   r  rO   r/   r]  r%   )r  r   r8  r   r   r2   r0   )r   rw  r  r   s       r   test_reuse_struct_from_otherz%TestVlen.test_reuse_struct_from_otherF  sG   Cj3 4 456Yuc"" 	2aS$b111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 Yuc"" 	?aS$#sB(=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s$   A33A7:A7/CCCc                 z   t          j        t                    }| j                            t                      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 )NrW  r/   gffffff?333333?r   r
   )r  r   r   r   rB  )皙?g?g @g@r-   r-   r}   )r  r  皙@)皙?r  r  r   )r   r8  r  r   r2   r   rc   r   r   r   r   r  s      r   test_convertzTestVlen.test_convertP  s   _S!!V""9;;B"??#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                 r   t          j        t                    }| j                            t                      d|          }t          j        d          |d<   t          j        t          j        d          t          j        d          gt          j        d          t          j        d          ggt                    |d d d d f<   t          j        t          j        d          t          j        d          gt          j        d          t          j        d          gg          |d d d d f<   d S )Nr  r/   r
   r"  r   r   )
r   r8  r  r   r2   r   rc   r   r   r   r  s      r   test_multidimzTestVlen.test_multidima  s    _S!!V""9;;b"AA9Q<<48billBIaLL9Yq\\29Q<<8:AGI I I111aaa48billBIaLL9 illBIaLL9; < <111aaa4r   c                    t          j        |          }| j                            t	                      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        
                                 t                      r| j                                         dS dS )zp
        Helper for testing various vlen numpy data types.
        :param np_dt: Numpy datatype to test
        r|   r/   )r~         @g      >@)g33333Y@gi@gfffffX@g      %g     r)r
   r   r  r.   )r~  r  g      @r  g      )r   ir   r
   i'  r   r   r
   r   r   r-   g333333?r  N)r   r8  r   r2   r   rc   r   r0   r0  r   r  r   r    )r   np_dtrw  r7   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_testingj  s   
 _U##V""9;;B"?? (===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 	 	FLLNNNNN	 	r   c                 X    t          j        d          }|                     |           d S )Nr  rc   r0   r  r   r  s     r   test_numpy_float16zTestVlen.test_numpy_float16  +    ##  '''''r   c                 X    t          j        d          }|                     |           d S )Nfloat32r  r  s     r   test_numpy_float32zTestVlen.test_numpy_float32  r  r   c                 X    t          j        d          }|                     |           d S )Nr  r  r  s     r   test_numpy_float64_from_dtypez&TestVlen.test_numpy_float64_from_dtype  r  r   c                 H    t           j        }|                     |           d S r   )rc   r  r  r  s     r   test_numpy_float64_2zTestVlen.test_numpy_float64_2  s#    
  '''''r   c                 b   t                      }| j                            |dt          j        d                     | j        |         }t          j        g d          }|ddd         |d<   t          |d         |ddd         k              sJ |d          d|ddd                      dS )	z4Test that non-contiguous arrays are stored correctlyr   r  r/   )TFTTFFFNr   r    != r   r   r2   r   r8  rc   r   r_  )r   r6   r7   r  s       r   test_non_contiguous_arrays_boolz(TestVlen.test_non_contiguous_arrays_bool  s    {{dE1H1HIIIVD\HCCCDD##A#12a5AcccF?##;;1%;%;1SSqS6%;%;;;#;;r   c                 b   t                      }| j                            |dt          j        d                     | j        |         }t          j        g d          }|d d d         |d<   t          |d         |d d d         k              sJ |d          d|d d d                      d S )Nr   int8r/   )r   r-   r
   r}   r   r   r   r   r   r  r  )r   r6   r7   r]  s       r   test_non_contiguous_arrays_intz'TestVlen.test_non_contiguous_arrays_int  s    {{dE1H1HIIIVD\H+++,,##A#12a5AcccF?##;;1%;%;1SSqS6%;%;;;#;;r   c                 F   t          j        d          }d}| j                            t	                      d||          }t          j        t                    5  t          j	        |
                                t                     d d d            d S # 1 swxY w Y   d S )Nr  r  r  r   r  r/   )r   r  r   r2   r   rB   r   r   rc   r   r  r  r  s       r   test_asstr_array_dtypezTestVlen.test_asstr_array_dtype  s    000
V""9;;bJ"WW]:&& 	, 	,HRXXZZs++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   .BBBN)r"   r#   r$   r  r  r  r  r  r  r  r  r  r  r  r  r  r%   r   r   r  r  .  s        3 3 3$B B B
? ? ?3 3 3"< < <. . .`( ( (( ( (( ( (( ( (< < << < <, , , , ,r   r  c                       e Zd Zd Zd ZdS )TestLowOpenc                     | j                             t                      dd          }|j                                        }dS )z Test H5Dget_access_plist r,   r:   r/   N)r   r2   r   r   r2  )r   r7   p_lists      r   test_get_access_listz TestLowOpen.test_get_access_list  s9    V""9;;D"AA''))r   c                    t                      }t          j                            t          j        j                  }| j                            |dd          }~t          j                            | j        j	        |
                    d          |          }|                     |t          j        j                   dS )z# Test the dapl keyword to h5d.open r   r:   r/   rv   N)r   r   h5pr  DATASET_ACCESSr   r2   r  r-  r   rx   r   	DatasetID)r   r6   daplrL   dsids        r   	test_daplzTestLowOpen.test_dapl  s    {{xtx677v$$T6$>>x}}TVYG(<(<dCCdDH$677777r   N)r"   r#   r$   r  r  r%   r   r   r  r    s2        * * *
8 8 8 8 8r   r  c            
      d   ddl m}   |             }t                      }t          j        |d          5 }|                    |ddd           d||         d d <   d d d            n# 1 swxY w Y   |                    d           t          j        |d	          5 }||         j        }|                                d
k    sJ t          d
          D ]~}t          t          j        t          j        |d                    dz            }|                    |          }|j        |k    sJ |j        dk    sJ |j        J |j        dk    sJ |                    d          }|j        dk    sJ |j        dk    sJ |j        J |j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   BytesIOr   r  r   r;  rA  r
   r  r   r[   r"  )ior  r   r   r   r2   seekr   get_num_chunksr  rS  rc   r   unravel_indexget_chunk_infochunk_offsetfilter_maskbyte_offsetrW   get_chunk_info_by_coord)	r  bufr6   foutfinr7   joffsetsis	            r   test_get_chunk_detailsr    sT   
'))C;;D	3		 D
84PPPT
111               HHQKKK	3		 Y\  ""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
   r[   r[   )r
   r[   c   zJchunk iteration requires  HDF5 1.10.10 and later 1.10, or 1.12.3 and laterc                  \  	 ddl m}   |             }t                      }t          j        |d          5 }|                    |ddd           d||         d	d	<   d	d	d	           n# 1 swxY w Y   |                    d           t          j        |d
          5 }||         j        }|                                }|dk    sJ i 	t          |          D ]!}|
                    |          }|	|j        <   "	fd}|                    |           d	d	d	           d	S # 1 swxY w Y   d	S )z%H5Dchunk_iter() for chunk informationr   r  r   r  r   r;  rA  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  rW   )
chunk_infoknowncis     r   callbackz!test_chunk_iter.<locals>.callback
  sp    z./E*e.@@@@@)U->>>>>)U->>>>>?ej000000r   )r  r  r   r   r   r2   r  r   r  r  r  r  
chunk_iter)
r  r  r6   r   r  
num_chunksr  r  r  r  s
            @r   test_chunk_iterr    s   
 
'))C;;D	3		 	ZMMM$
               HHQKKK	3		 "wz((**
S    z"" 	% 	%A$$Q''B"$Br	1 	1 	1 	1 	1 	!!!#" " " " " " " " " " " " " " " " " "s$   'A((A,/A,A7D!!D%(D%c                 p    |                      t                      d          }|j        J |j        J d S )Nr.   r/   )r2   r   rJ   rL  )r   r7   s     r   test_empty_shaper    s@    		%	%ikk	%	A	AB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   rp  r'  r/   r  )
r  r  r   r   r2   r  rB  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                 l   t          j        t           j                  j        t          j        t           j                  j        dz   g}|                     t                      |t           j                  }|j        t          j        t           j                  k    sJ t           j        	                    |d d          t          j
        |t           j                             ||d d <   t           j        	                    |d d          t          j
        |t           j                             d S )Nr
   r  r/   )rc   iinfor   maxr2   r   uint64r0   r   r   r   )r   r   r7   s      r   test_python_int_uint64r   (  s    HRX"BHRX$6$6$:Q$>?D 
	%	%ikkBI	%	N	NB8rx	******J!!"QQQ%$bi)H)H)HIII BqqqEJ!!"QQQ%$bi)H)H)HIIIIIr   c                     |                      t                      dt          j                  }t          j                            dd          }||d d g ddf<   d S )N)r}   rI  r   r/      )r}   r   r   r-  )r   r   r-   .)r2   r   rc   r'  r  r  )r   r   blocks      r   test_setitem_fancy_indexingr  6  s[    

&
&y{{L
&
Q
QCIc	22E"C999cr   c                      t          t          d                    5 } | d         d         dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzvlen_string_dset.h5DS1r   s   Partingr   r   r   s    r   test_vlen_spacepadr	  =  s    	 !677	8	8 )Ax{j((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )   A  AAc                      t          t          d                    5 } | d         d         dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzvlen_string_dset_utc.h5ds1r   s   2009-12-20T10:16:18.662409Zr  r  s    r   test_vlen_nulltermr  B  s    	 !:;;	<	< =x{<<<<<<= = = = = = = = = = = = = = = = = =r
  c                     d}|                      t                      dt          j        |d          }t	          |          |j        v sJ |j        dk    sJ d S )N   r   T)rJ   r0   r  allow_unknown_filterunknown)r2   r   rc   r'  r  _filtersr  )r   fake_filter_idr7   s      r   test_allow_unknown_filterr  G  si    N		%	%828! 
& 
 
B ~"+---->Y&&&&&&r   c            
      D   ddl m}   |             }t                      }t          j        |d          5 }|                    |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          }|j                                                                        }|j                                        	                                dd         |k    sJ |dk    sJ 	 ddd           dS # 1 swxY w Y   dS )z2Chunk cache configuration for individual datasets.r   r  r   )r[   r   )r}   r-   r;      r    )rJ   rB  r0   rdcc_nbytesrdcc_w0rdcc_nslotsr
   N)r  r  r  r    0 q=
ףp?  )rJ   r0   r  r  r  )r  r  r  )r  r  r   r   r   r2   r   r2  get_chunk_cache	get_cacher  r  )r  r  r6   r  r7   ds_chunk_cacher  s          r   test_dset_chunk_cacher!  R  s:   
'))C;;D	3		 =  t'# ! G G //11AACCw''))3355abb9^KKKK!<<<<<<= = = = = = = = = = = = = = = HHQKKK	3		 >  '3 ! H H //11AACCv&&((2244QRR8NJJJJ!======> > > > > > > > > > > > > > > > > >s%   B	C

CC?B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                             t                      |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
   r0   r   r"  gMbP?N)
r   r2   r   r  rc   r  r  r  r_  nanmax)r   rJ   rL   valdeltanvals         r   test_numpy_commutativez&TestCommutative.test_numpy_commutativeo  s    
 v$$Y[[%u*,).%*@ % B B
 jd$$vsd{455555vsd{455555 yu$vtt|677777vtt|67777777r   c                     d}| j                             t                      |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  N)r   r2   r   r  rc   r  r  )r   rJ   rL   r(  s       r   test_basetype_commutativez)TestCommutative.test_basetype_commutative  s     v$$Y[[%u*,).%*@ % B B
 Biit----t------r   N)r"   r#   r$   r?   r+  r-  r%   r   r   r#  r#  j  s<         8 8 80. . . . .r   r#  c                       e Zd ZdZd Zd ZdS )TestVirtualPrefixz%
    Test setting virtual prefix
    c                 b   d}d}| j                             t                      |t          t	          j        j        | |          }t          j        |j	        
                                                                                                                                          }||k    sJ d S )Nr%  /path/to/virtual)r0   r   virtual_prefix)r   r2   r   r  rc   r  r  r0  r1  r   r2  get_virtual_prefixr4  r5  )r   rJ   r2  rL   virtual_prefix_readbacks        r   test_virtual_prefix_createz,TestVirtualPrefix.test_virtual_prefix_create  s    +v$$Y[[%u*,).%*@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                             t                      dd|          }t          j        |j                                                                                                                  	                                }| 
                    ||           |                     |t                     | 
                    |j        d           d S )Nr1  r   r   )r2  )r   r  r   r0  r1  r   r2  r3  r4  r5  rI   r   r   rJ   )r   r2  rL   r4  s       r   test_virtual_prefix_requirez-TestVirtualPrefix.test_virtual_prefix_require  s    +v%%ikk7CR`%aa"),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$   r?   r5  r7  r%   r   r   r/  r/    s<         9 9 9. . . . .r   r/  r   c                 z    t          j        d          }d}|                     t                      |||          S )Nr  r  s   fillr  )r   r  r2   r   )filerJ   rw  r  s       r   ds_strr:    s;    		G	,	,	,BJy{{EzRRRr   c                     t          j        dt          j        d          fdt           j        fg          }t          j        d|          }t                      }t          j        ||          | |<   | |         S )Nru   r  r  bar)fillr  r/   )rc   r0   r   r  r  r  r   broadcast_to)r9  rJ   rw  r  r6   s        r   	ds_fieldsr?    sv    		!73334	
 
 
B M444J;;DU33DJ:r   zview_getter,make_dsc                     | S r   r%   r7   s    r   <lambda>rB    s    B r   c                 8    |                      t                    S )Nr/   )r0  r   rA  s    r   rB  rB    s    BIIFI++ r   c                 *    |                                  S r   )r  rA  s    r   rB  rB    s    BHHJJ r   c                 ,    |                      d          S )Nru   )r(  rA  s    r   rB  rB    s    BIIe$$ r   )r7   r0  r  r(  )ids)r   r   Fr   Tc                 ^     ||          } | |          }t          j        ||           d S )Nr   )rc   r   )view_gettermake_dsr   r   r7   views         r   test_array_copyrL    s;     
		B;r??DHTr   z"forbidding copies requires numpy 2r  c                      ||          } | |          }t          j        t          d          5  t          j        |d           d d d            d S # 1 swxY w Y   d S )Nz#memory allocation cannot be avoidedrb  FrH  )rB   r   r   rc   r   rI  rJ  r   r7   rK  s        r   test_array_copy_falserO    s     
		B;r??D	z)N	O	O	O # #
E""""# # # # # # # # # # # # # # # # # #s   AAAc                      ||          } | |          }t          j        |d          j        t          j        d          k    sJ d S )Nr  r/   )rc   r   r0   rN  s        r   test_array_dtyperQ    sQ    			B;r??D8D'''-&1A1AAAAAAAr   c                      ||d          } | |          }t          |d         t          t          f          sJ t          j        |          j        dk    sJ d S )Nr%   rJ   )r   r   r  rc   r   rJ   rN  s        r   test_array_scalarrT    sc    	b	)	)	)B;r??Dd2h-----8D>>2%%%%%%r   c                 t     ||d          } | |          }t          j        |          j        dk    sJ d S )Nr}   rZ   rS  )rc   r   rJ   rN  s        r   test_array_ndrW    sE    	f	-	-	-B;r??D8D>>6))))))r   c                      ||d          } | |          }|j         t          j         t                    k    sJ |j        dk    sJ |j        dk    sJ |j        dk    sJ t          |          dk    sJ d S )NrV  rS  r   r   r}   )r0   rc   r   ndimrJ   rW   rT  rN  s        r   test_view_propertiesrZ    s    	f	-	-	-B;r??D:&))))))9>>>>:9????t99>>>>>>r   zspawns thread pool itselfc                 h    d}dt          j        |           fdt          |          5 fdt          |          D             }d d d            n# 1 swxY w Y   d |D              t	          fdt          |          D                       }t	                     |k    sJ d S )Nr  r}   c                                                       t                    D ]"}                    d| dd|ddd           #d S )Nconcurrent_02d_)rI  r;  r/   )waitr  r2   )ithreadr  N_DATASETS_PER_THREADbarrierr   s     r   closurez1test_concurrent_dataset_creation.<locals>.closure
	  sl    ,-- 	c 	cA(()Lw)L)L)LQ)L)L)Lg]a(bbbb	c 	cr   )max_workersc                 <    g | ]}                     |          S r%   )submit)rJ  ra  rd  executors     r   r  z4test_concurrent_dataset_creation.<locals>.<listcomp>	  s'    UUU8??7G44UUUr   c                 6    g | ]}|                                 S r%   )result)rJ  r   s     r   r  z4test_concurrent_dataset_creation.<locals>.<listcomp>	  s     !!!AQXXZZ!!!r   c              3   P   K   | ] }t                    D ]}d |dd|dV  !dS )r]  r^  r_  N)r  )rJ  r|  r  rb  s      r   rK  z3test_concurrent_dataset_creation.<locals>.<genexpr>	  sQ      qqQTYZoTpTpqqq0000000qqqqqqqr   )	threadingBarrierr   r  set)r   	N_THREADSfuturesr   rb  rc  rd  rh  s   `   @@@@r    test_concurrent_dataset_creationrq  	  sF   I 	**Gc c c c c c c 
		2	2	2 VhUUUUUE)DTDTUUUV V V V V V V V V V V V V V V "!!!!!qqqq%	:J:JqqqqqH}))))))s   AA"%A"c                     t                      }|                     |dt          j        ddd          }|j        t
          j        j        t
          j        j        t
          j        j	        fk    sJ |j
        dk    sJ d S )NrI  Tr  )rJ   r0   r  r  r  )r  r  r  )r   r2   rc   r  
filter_idsr   r  FILTER_SHUFFLE
FILTER_LZFFILTER_FLETCHER32filter_names)r   r6   r7   s      r   test_filter_propertiesrx  	  s    ;;D		%	%D
5 
& 
 
B =!4dh6P     ?>>>>>>>r   c                 r   |                      t          d          t          j        d                    }|                      t          d          | j        |j        g          }t          |d         t          j                  sJ | |d                  | k    sJ t          |d         t          j                  sJ | |d                  |k    sJ |                      t          d          |j                  }t          |d         t          j        j                  sJ | |d                  |k    sJ d S )	Nru   r^  r   refsr   r
   
ref_scalarr%   )	r2   r   rc   r   ry  r   r   	Referencer  )r   r  refs_dsref_scalar_dss       r   test_store_refsr  $	  s'   

&
&y'7'7bimm
&
L
LC**9V+<+<MDUWZW^C_*``Ggaj$.11111$5555gaj$.11111$++++ "00<1H1Hsw0WWMmB');<<<<<r*+s222222r   c                    |                      t          d          t          j        d                    }|                      t          d          |j        d d         |j        dd          g          }t          |d         t          j                  sJ t          j        	                    ||d                  t          j        d                     t          j        	                    ||d                  t          j        dd                     |                      t          d	          d
t          j
                  }t          j        t          d          5  |j        d d         |d<   d d d            d S # 1 swxY w Y   d S )Nru   r^  r   regrefsr   r
   r   r]  rz  rO   r   convertrb  rZ   )r2   r   rc   r   rv  r   r   RegionReferencer   r   	ref_dtyperB   r   rh   )r   r  regionrefs_dsr}  s       r   test_store_regionrefsr  2	  s   

&
&y'7'7bimm
&
L
LC!0091E1EcrcCM!""-M0  M mA&(<=====J!!#mA&6"72GGGJ!!#mA&6"71b9I9IJJJ**9V+<+<DPTP^*__G	y		2	2	2 ' ']2A2&
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's    F  FF)r   )or?   r0  r=  r@   numpyrc   rm   rB   rl  concurrent.futuresr   r   r   r   h5py._hl.baser   r   r   r	   commonr   r   r   r   r   
data_filesr   h5py_warningsr   r   r'   rF   r   r   r  r  r?  ri  r  rC   r  r  r.   r   r  r  r  r  r  r  r   r  rx   r  r  r  r  r  r  r  r%  rX  rm  r  r  r  r  r  r  r  r>  rG  rX  rb  rk  rs  r  r  r  r  r  r`  versionhdf5_version_tupler  r  r  r   r  r	  r  r  r!  r#  r/  r:  r?  view_gettersCOPY_IF_NEEDEDrL  skipifrO  rQ  rT  rW  rZ  rD   rq  rx  r  r  r%   r   r   <module>r     s:     				 



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