
    -Sh                        d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZ ddlmZ ddlmZ ddlZddlmZ ddlZ G d	 d
e
          Z G d de
          Zej        j         G d de
                      Z G d de
          Z G d de
          Zej                            ej        j        d         dz  dk    d           G d de
                      Z G d de
          Z G d de
          Z  e	j!        e d           G d de
                      Z" G d de
          Z# G d  d!e
          Z$ G d" d#e
          Z% G d$ d%e
          Z& G d& d'e
          Z' G d( d)e
          Z( G d* d+e
          Z) G d, d-e
          Z*ej        j+         G d. d/                      Z, G d0 d1e
          Z-ej                            ej        j        d2k     o-ej        j        dd         d3k    pej        j        d         d4k     d5          ej                            d6ej.        v d7           G d8 d9                                  Z/ej                            ej        j        d:k     d;          ej                            d6ej.        v d7          ej        0                    d<g d=          d>                                     Z1d? Z2dS )@z`
    File object test module.

    Tests all aspects of File objects, including their creation.
    N   )utTestCaseUNICODE_FILENAMESclosed_tempfile)
direct_vfd)File   )h5c                       e Zd ZdZd Zd Zd Zd Zej	        
                     ej        d          dk    o
ej        dk    d	
          d             Zd Zd Zd Zd ZdS )TestFileOpenz=
        Feature: Opening files with Python-style modes.
    c                    |                                  }t          j        t                    5  t	          |          5  	 ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t	          |d          5  	 ddd           n# 1 swxY w Y   t          j        |t          j                   	 t	          |          5 }| 	                    |           | 
                    |j        d           ddd           n# 1 swxY w Y   t          j        |t          j                   n$# t          j        |t          j                   w xY wt          |d          5 }|                    d           ddd           n# 1 swxY w Y   |                     t                     5  t	          |           ddd           dS # 1 swxY w Y   dS )z8 Default semantics in the presence or absence of a file Nwrwb    )mktemppytestraisesFileNotFoundErrorr	   oschmodstatS_IREAD
assertTrueassertEqualmodeS_IWRITEopenwriteassertRaisesOSErrorselffnamefs      Z/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/h5py/tests/test_file.pytest_defaultzTestFileOpen.test_default&   s    ],-- 	 	e                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 % 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
%%%	+e ."""  ---. . . . . . . . . . . . . . . HUDM****BHUDM**** % 	!GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	w'' 	 	KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A#A A#A	A#A	A##A'*A'>BBB7D. 1D7D. DD. 
DD. .!E"FFF)GG
G
c                 >   |                                  }t          |d          }|                     |           |                    d           |                                 t          |d          }|                     d|           |                                 dS )z' Mode 'w' opens file in overwrite mode r   fooN)r   r	   r   create_groupcloseassertNotInr$   r%   fids      r'   test_createzTestFileOpen.test_create@   s    5#		5#$$$		    c                 &   |                                  }t          |d          }|                     |           |                                 |                     t
                    5  t          |d           ddd           dS # 1 swxY w Y   dS )z( Mode 'w-' opens file in exclusive mode w-N)r   r	   r   r,   r!   FileExistsErrorr.   s      r'   test_create_exclusivez"TestFileOpen.test_create_exclusiveK   s    5$		// 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   (BB
B
c                    |                                  }t          |d          }	 |                     |           |                    d           d|v sJ 	 |                                 n# |                                 w xY wt          |d          }	 d|v sJ |                    d           d|v sJ 	 |                                 dS # |                                 w xY w)zE Mode 'a' opens file in append/readwrite mode, creating if necessary ar*   barN)r   r	   r   r+   r,   r.   s      r'   test_appendzTestFileOpen.test_appendT   s    5#	OOC   U###C<<<<<IIKKKKCIIKKKK5#	C<<<<U###C<<<<<IIKKKKKCIIKKKKs   0A, ,B!C C$CIBUILDWHEEL1linuxz7Linux docker cibuildwheel environment permissions issuereasonc                 $   |                                  }t          |d          5 }|                    d           ddd           n# 1 swxY w Y   t          j        |t
          j                   	 t          j        t                    5  t          |d           ddd           n# 1 swxY w Y   t          j        |t
          j        t
          j
        z             dS # t          j        |t
          j        t
          j
        z             w xY w)z' Mode 'a' fails when file is read-only r7   r*   N)r   r	   r+   r   r   r   r   r   r   PermissionErrorr   r.   s      r'   test_append_permissionsz$TestFileOpen.test_append_permissionsh   sY    % 	$U###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
%%%	:// ! !UC   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! HUDL4=899999BHUDL4=89999sA   AAA2C! B(C! (B,,C! /B,0C! !.Dc                    |                                  }t          |d          }|                                 |                     |           t          |d          }|                     |           |                     t                    5  |                    d           ddd           n# 1 swxY w Y   |                                 dS )z& Mode 'r' opens file in readonly mode r   r   r*   N)r   r	   r,   assertFalser   r!   
ValueErrorr+   r.   s      r'   test_readonlyzTestFileOpen.test_readonlyy   s    5#		5#z** 	$ 	$U###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$		s   B//B36B3c                 *   |                                  }t          |d          }|                    d           |                                 t          |d          }d|v sJ |                    d           d|v sJ |                                 dS )z1 Mode 'r+' opens existing file in readwrite mode r   r*   r+r8   N)r   r	   r+   r,   r.   s      r'   test_readwritezTestFileOpen.test_readwrite   s    5#		5$||||||||		r1   c                 8   |                                  }|                     t                    5  t          |d           ddd           n# 1 swxY w Y   |                     t                    5  t          |d           ddd           dS # 1 swxY w Y   dS )z( Modes 'r' and 'r+' do not create files r   NrG   )r   r!   r   r	   r$   r%   s     r'   test_nonexistent_filez"TestFileOpen.test_nonexistent_file   s   011 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	011 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAA1BBBc                     |                      t                    5  t          |                                 d           ddd           dS # 1 swxY w Y   dS )z  Invalid modes raise ValueError mongooseN)r!   rD   r	   r   )r$   s    r'   test_invalid_modezTestFileOpen.test_invalid_mode   s    z** 	, 	,
+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   #AAAN)__name__
__module____qualname____doc__r(   r0   r5   r9   r   markskipifr   getenvsysplatformrA   rE   rH   rK   rN    r1   r'   r   r       s           4	 	 	    ( [	.!!S(DS\W-DH   : :	 :
 
 

 
 
  , , , , ,r1   r   c                       e Zd ZdZd ZdS )TestSpaceStrategyzE
        Feature: Create file with specified file space strategy
    c                    |                                  }t          |dddd          }|                     |           |                     t                    5  t          |dd           ddd           n# 1 swxY w Y   |                     t                    5  t          |                                  dd	           ddd           n# 1 swxY w Y   |                    d
dd          }d|d<   |                    ddd          }d|d<   |d
= |                                 t          |d          }|j                                        }|	                                }|d         dk    sJ |d         dk    sJ |d         dk    sJ |                    ddd          }d|d<   |                                 dS )z& Create file with file space strategy r   pageTd   )fs_strategy
fs_persistfs_thresholdr7   )r^   Ninvalidr*   )r]   uint8)dtyper   .r8   r   r
   foo2)
r   r	   r   r!   rD   create_datasetr,   idget_create_plistget_file_space_strategy)r$   r%   r/   dsetplistfs_strats         r'   test_create_with_space_strategyz1TestSpaceStrategy.test_create_with_space_strategy   sH   5#6"6 6 6z** 	1 	10000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 z** 	< 	<;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< !!%w!??S	!!%w!??S	J		5#''))0022{a{d""""{c!!!!!!&&!@@S			s$   A77A;>A;%CCCN)rO   rP   rQ   rR   rl   rX   r1   r'   rZ   rZ      s-             r1   rZ   c                   V   e Zd ZdZd Zd Zej                            e	j
        j        dk    d          d             Zej                            e	j
        j        dk     d	          d
             Zej                            e	j
        j        dk     d	          d             Zd ZdS )TestPageBufferingz)
        Feature: Use page buffering
    c                 $   |                                  }t          |ddd          5  	 ddd           n# 1 swxY w Y   |                     t                    5  t          |dd           ddd           n# 1 swxY w Y   |                     t                    5  t          |ddd           ddd           n# 1 swxY w Y   |                     t                    5  t          |ddd           ddd           dS # 1 swxY w Y   dS )	z;Allow page buffering only with fs_strategy="page".
        r   r\    @  )r   r^   page_buf_sizeNr   rq   fsm	aggregater   r	   r!   r"   rJ   s     r'   test_only_with_page_strategyz.TestPageBuffering.test_only_with_page_strategy   s2    %cvWMMM 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	w'' 	9 	9S8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9w'' 	L 	LSe7KKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Lw'' 	R 	RSkQQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	RsB   6::A::A>A>B??CC$DD	D	c                    |                                  }d}d}d}t          |dd|||          5 }|j                                        }|                     |                                |||f           ddd           dS # 1 swxY w Y   dS )zHVerify set page buffer size, and minimum meta and raw eviction criteria.rp      C   r   r\   )r   r^   rq   min_meta_keepmin_raw_keepNr   r	   rf   get_access_plistr   get_page_buffer_size)r$   r%   pbsmmmrr&   fapls          r'   test_check_page_buf_sizez*TestPageBuffering.test_check_page_buf_size   s    %cv #2BH H H 	IKL4((**DT66883B-HHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is   ABB	B)r         zRequires HDF5 <= 1.14.3r=   c                    |                                  }d}t          |dd|          5  	 ddd           n# 1 swxY w Y   |                     t                    5  t          |d|dz
             ddd           dS # 1 swxY w Y   dS )	z;Page buffer size must be greater than file space page size.rp   r   r\   r   r^   fs_page_sizeNr   r   rr   ru   )r$   r%   fsps      r'   test_too_small_pbsz$TestPageBuffering.test_too_small_pbs   s    %cvCHHH 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	w'' 	7 	7SA6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   8<<B  BBr   r      Requires HDF5 >= 1.14.4c                 P   |                                  }d}t          |d          5  	 ddd           n# 1 swxY w Y   t          |d|          5 }|j                                        }|                                d         dk    sJ 	 ddd           dS # 1 swxY w Y   dS )z(Open non-PAGE file with page buffer set.rp   r   )r   Nr   rr   r   r   r	   rf   r}   r~   r$   r%   r   r&   r   s        r'   test_open_nonpage_pbsz'TestPageBuffering.test_open_nonpage_pbs   s/    %c""" 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	%c555 	74((**D,,..q1Q66666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   6:::BB"Bc                 Z   |                                  }d}t          |dd|          5  	 ddd           n# 1 swxY w Y   t          |d|dz
            5 }|j                                        }|                                d	         |k    sJ 	 ddd           dS # 1 swxY w Y   dS )
zBAdjust page buffer size automatically when smaller than file page.rp   r   r\   r   Nr   r]   rr   r   r   r   s        r'   test_smaller_pbsz"TestPageBuffering.test_smaller_pbs   s7    %cvCHHH 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	%cS999 	9Q4((**D,,..q1S88888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   8<<:B  B$'B$c                 ~   |                                  }d}d|z  }t          |dd|          5  	 ddd           n# 1 swxY w Y   t          |d|dz
  	          5 }|j                                        }|                     |                                d
         |           ddd           dS # 1 swxY w Y   dS )zVerify actual page buffer size.rp   r
   r   r\   r   Nr   r   rr   r   r|   )r$   r%   r   r   r&   r   s         r'   test_actual_pbsz!TestPageBuffering.test_actual_pbs  sS   #g%cvCHHH 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	%cQ777 	B14((**DT6688;SAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs"   =AAAB22B69B6N)rO   rP   rQ   rR   rv   r   r   rS   rT   h5pyversionhdf5_version_tupler   r   r   r   rX   r1   r'   rn   rn      s"        R R R	I 	I 	I [7*D8  : :7 7: :7 [7*D8  : :7 7: :7 [7*D4  6 69 96 69	B 	B 	B 	B 	Br1   rn   c                       e Zd ZdZd Zd ZdS )	TestModesz?
        Feature: File mode can be retrieved via file.mode
    c                 <   |                                  }t          |d          5 }|                     |j        d           ddd           n# 1 swxY w Y   t          |d          5 }|                     |j        d           ddd           dS # 1 swxY w Y   dS )z/ Mode equivalent can be retrieved via property r   rG   Nr   )r   r	   r   r   r#   s      r'   test_mode_attrzTestModes.test_mode_attr  s   % 	+QVT***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+% 	*QVS)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s#   AAA(BBBc                    |                                  }|                                  }t          |d          }|                                 t          |d          }	 t          j        |d          |d<   |d         j        }|                     |j        d           |                                 |                                 n-# |                                 |                                 w xY wt          |d          }	 |d         j        }|                     |j        d           |                                 |                                 dS # |                                 |                                 w xY w)zU Mode property works for files opened via external links

        Issue 190.
        r   /ExternalrG   r   N)r   r	   r,   r   ExternalLinkfiler   r   )r$   fname1fname2f1f2f3s         r'   test_mode_externalzTestModes.test_mode_external   s>   
 &#



&#	!.vs;;BzNJ$BRWd+++HHJJJHHJJJJ HHJJJHHJJJJ&#	J$BRWc***HHJJJHHJJJJJ HHJJJHHJJJJs   A C *C1(E *FN)rO   rP   rQ   rR   r   r   rX   r1   r'   r   r     s<         * * *    r1   r   c                       e Zd ZdZ ej        ej        dk    d          d             Z ej        e	d          d             Z
 ej        ej        dk    d          d             Zd	 Zd
 Zd Zd Zd Zd ZdS )TestDriverszz
        Feature: Files can be opened with low-level HDF5 drivers. Does not
        include MPI drivers (see bottom).
    posixz"Stdio driver is supported on posixc                    t          |                                 dd          }|                     |           |                     |j        d           |                                 t          |                                 dd          }|                     |           |                     |j        d           |                                 dS )z$ Stdio driver is supported on posix r   stdiodriverr7   Nr	   r   r   r   r   r,   r$   r/   s     r'   
test_stdiozTestDrivers.test_stdioD  s     4;;==#g666W---		 4;;==#g666W---		r1   zODIRECT driver is supported on Linux if hdf5 is built with the appriorate flags.c           	         t          |                                 dd          }|                     |           |                     |j        d           |j                                                                        }|                                 t          |                                 dd          }|                     |           |                     |j        d           |                                 ||d         |d         d|d         z  f|d         dz  |d         d|d         z  f|d         d|d         z  d	|d         z  ffD ]\  }}}t          |                                 dd|||
          5 }|j                                                                        }|d         }|d         }|d         }	||k    sJ ||k    sJ |	|	k    sJ 	 ddd           n# 1 swxY w Y   dS )z$ DIRECT driver is supported on Linuxr   directr   r7   r   r   r   r
      )r   	alignment
block_size	cbuf_sizeN)	r	   r   r   r   r   rf   r}   get_fapl_directr,   )
r$   r/   default_faplr   r   r   actual_faplactual_alignmentactual_block_sizeactual_cbuf_sizes
             r'   test_directzTestDrivers.test_directR  sE   
 4;;==#h777X...v..00@@BB		 4;;==#h777X...		$ a,q/1|A3FGa1$l1oq<?7JKa!l1o"5q<?7JK	1 	< 	<,Iz9 dkkmmS )!+ )+ + + 
< /2!f5577GGII#.q> $/N!#.q> '94444(J6666'+;;;;;;
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
< 
<	< 	<s   =AG&&G*	-G*	z!Sec2 driver is supported on posixc                    t          |                                 dd          }|                     |           |                     |j        d           |                                 t          |                                 dd          }|                     |           |                     |j        d           |                                 dS )z# Sec2 driver is supported on posix r   sec2r   r7   Nr   r   s     r'   	test_sec2zTestDrivers.test_sec2  s     4;;==#f555V,,,		 4;;==#f555V,,,		r1   c                    |                                  }t          |ddd          }|                     |           |                     |j        d           |                                 |                     t          j        	                    |                     t          |                                  dd          }|                     |           |                     |j        d           |                                 dS )z- Core driver is supported (no backing store) r   coreFr   backing_storer7   r   N)
r   r	   r   r   r   r,   rC   r   pathexistsr.   s      r'   	test_corezTestDrivers.test_core  s    5#fEBBBV,,,		../// 4;;==#f555V,,,		r1   c                    |                                  }t          |ddd          }|                    d           |                                 t          |d          }d|v sJ |                                 |                     t
                    5  t          |dd           ddd           dS # 1 swxY w Y   dS )	z3 Core driver saves to file when backing store used r   r   Tr   r*   r   )r   N)r   r	   r+   r,   r!   	TypeErrorr.   s      r'   test_backingzTestDrivers.test_backing  s    5#fDAAA		5#||||		y)) 	1 	140000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   B55B9<B9c                    |                                  }t          |d          }|                    d           |                                 t          |dd          }|                     |           d|v sJ |                     t                    5  |                    d           ddd           n# 1 swxY w Y   |                                 dS )z0 Core driver can be used to open existing files r   r*   r   r   r   r8   N)r   r	   r+   r,   r   r!   rD   r.   s      r'   rE   zTestDrivers.test_readonly  s    5#		5#f---||||z** 	$ 	$U###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$		s   B77B;>B;c                     |                                  }t          |dddd          }|                     |           |                                 dS )z* Core driver supports variable block size r   r      F)r   r   r   N)r   r	   r   r,   r.   s      r'   test_blocksizezTestDrivers.test_blocksize  sQ    5#f!&( ( (		r1   c                 Z   |                                  }t          |dd          }|                                 |                     t          j                            |dz                        t          |dd          }|                     |           |                                 dS )z* Split stores metadata in a separate file r   splitr   z-m.h5r   N)r   r	   r,   r   r   r   r   r.   s      r'   
test_splitzTestDrivers.test_split  s    5#g...		uw778885#g...		r1   c                    t          j                    }t          |dd          }|                     |           |                     |j        d           |                                 |                     t                    5  t          |dd           ddd           n# 1 swxY w Y   |                                 dS )z( Python file object driver is supported r   fileobjr   r   N)	tempfileTemporaryFiler	   r   r   r   r,   r!   rD   )r$   tfr/   s      r'   test_fileobjzTestDrivers.test_fileobj  s    #%%2s9---Y///		z** 	) 	)S((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)





s   B##B'*B'N)rO   rP   rQ   rR   r   
skipUnlessr   namer   r   r   r   r   r   rE   r   r   r   rX   r1   r'   r   r   =  s        
 R]27g%'KLL  ML R]:67 7-< -<7 7-<^ R]27g%'JKK  LK  1 1 1      
 
 
 
 
r1   r   zNot HDF5 release versionr=   c                        e Zd ZdZe fd            Zd Zd Zd Zd Z	 e
j        ej        j        dk     d          d	             Zd
 Zd Z xZS )TestNewLibverze
        Feature: File format compatibility bounds can be specified when
        opening a file.
    c                     t                                                       t          j        j        dk     r	d| _        d S t          j        j        dk     r	d| _        d S d| _        d S )Nr      r   v110)r      r   v112v114)super
setUpClassr   r   r   latest)cls	__class__s    r'   r   zTestNewLibver.setUpClass  s\     <*Z77CJJJ\,z99CJJJCJJJr1   c                     t          |                                 d          }|                     |j        d| j        f           |                                 dS )z Opening with no libver arg r   earliestNr	   r   r   libverr   r,   r$   r&   s     r'   r(   zTestNewLibver.test_default  I    $$J#<===						r1   c                     t          |                                 dd          }|                     |j        | j        | j        f           |                                 dS )z  Opening with single libver arg r   r   r   Nr   r   s     r'   test_singlezTestNewLibver.test_single  sP    H555DK#=>>>						r1   c                     t          |                                 dd          }|                     |j        d| j        f           |                                 dS )z  Opening with "v108" libver arg r   v108r   Nr   r   s     r'   test_single_v108zTestNewLibver.test_single_v108  N    F333FDK#8999						r1   c                     t          |                                 dd          }|                     |j        d| j        f           |                                 dS )z  Opening with "v110" libver arg r   r   r   Nr   r   s     r'   test_single_v110zTestNewLibver.test_single_v110  r   r1   r   zRequires HDF5 1.11.4 or laterc                     t          |                                 dd          }|                     |j        d| j        f           |                                 dS )z  Opening with "v112" libver arg r   r   r   Nr   r   s     r'   test_single_v112zTestNewLibver.test_single_v112  sP     F333FDK#8999						r1   c                     t          |                                 dd          }|                     |j        d           |                                 dS )z Opening with two libver args r   )r   r   r   N)r	   r   r   r   r,   r   s     r'   test_multiplezTestNewLibver.test_multiple  sI    ,@AAA#7888						r1   c                     t          |                                 d          }|                     |j        d| j        f           |                                 dS )z6 Omitting libver arg results in maximum compatibility r   r   Nr   r   s     r'   	test_nonezTestNewLibver.test_none  r   r1   )rO   rP   rQ   rR   classmethodr   r(   r   r   r   r   skipIfr   r   r   r   r   r   __classcell__)r   s   @r'   r   r     s         
 	  	  	  	  [	          RYt|.;.0 0 0 0        r1   r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )TestUserblockz;
        Feature: Files can be create with user blocks
    c                 H   t          |                                 dd          }	 |                     |j        d           |                                 n# |                                 w xY wt          |                                 dd          }	 |                     |j        d           |                                 n# |                                 w xY wt          |                                 dd          }	 |                     |j        d           |                                 n# |                                 w xY w|                     t                    5  t          |                                 dd           ddd           dS # 1 swxY w Y   dS )zA User blocks created with w, w-, x and properties work correctly r3      userblock_sizexr   nonN)r	   r   r   r  r,   r!   rD   r   s     r'   test_create_blocksizez#TestUserblock.test_create_blocksize&  s   S999	Q-s333GGIIIIAGGIIIIC888	Q-s333GGIIIIAGGIIIIC888	Q-s333GGIIIIAGGIIIIz** 	; 	;E::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s5   A A,C CD2 2E%%FFFc                    |                                  }t          |d          }|                                 |                     t                    5  t          j        |dd          }ddd           n# 1 swxY w Y   |                     t                    5  t          j        |dd          }ddd           dS # 1 swxY w Y   dS )z# User block only allowed for write r   r   r  r  NrG   )r   r	   r,   r!   rD   r   r$   r   r&   s      r'   test_write_onlyzTestUserblock.test_write_only=  s8   {{}}sOO				z** 	9 	9	$C888A	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 z** 	: 	:	$S999A	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s$   A77A;>A;CCCc                    |                                  }t          |dd          }|                                 |                     t                    5  t          |dd          }ddd           n# 1 swxY w Y   t          |dd          }	 |                     |j        d           |                                 dS # |                                 w xY w)zA User block size must match that of file when opening for append r   r  r  r7   r   N)r   r	   r,   r!   rD   r   r  r  s      r'   test_match_existingz!TestUserblock.test_match_existingI  s   {{}}s3///				z** 	5 	5T3t444A	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 s3///	Q-s333GGIIIIIAGGIIIIs   A44A8;A8C Cc                    |                                  }|                     t                    5  t          |dd          }ddd           n# 1 swxY w Y   |                     t                    5  t          |dd          }ddd           n# 1 swxY w Y   |                     t                    5  t          |dd          }ddd           dS # 1 swxY w Y   dS )z7 User block size must be a power of 2 and at least 512 r      r  Ni  i  )r   r!   rD   r	   r  s      r'   test_power_of_twozTestUserblock.test_power_of_twoX  s   {{}}z** 	4 	4T3s333A	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 z** 	4 	4T3s333A	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 z** 	5 	5T3t444A	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s5   AAA3BBB7CCCc                    |                                  }t          |dd          }|                    d           |                                 t	          |d          }	 |                    d           |                                 n# |                                 w xY wt          j        |d          }	 d|v sJ 	 |                                 n# |                                 w xY wt	          |d          }	 |                     |                    d          d           |                                 d	S # |                                 w xY w)
z= Test that writing to a user block does not destroy the file r   r  r  Foobarzr+bs   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXr   rbN)	r   r	   r+   r,   r   r    r   r   read)r$   r   r&   pyfiles       r'   test_write_blockzTestUserblock.test_write_blocke  s(   {{}}s3///	x   				dE""	LL$$$LLNNNNFLLNNNNIdC  	q=====GGIIIIAGGIIIIdD!!	V[[--z:::LLNNNNNFLLNNNNs$   !B B!:C C, )D? ?EN)	rO   rP   rQ   rR   r	  r  r  r  r  rX   r1   r'   r  r     si         ; ; ;.
: 
: 
:  5 5 5    r1   r  c                       e Zd ZdZd ZdS )TestContextManagerzC
        Feature: File objects can be used as context managers
    c                     t          |                                 d          5 }|                     |           ddd           n# 1 swxY w Y   |                     |            dS )z- File objects can be used in with statements r   N)r	   r   r   r   s     r'   test_context_managerz'TestContextManager.test_context_manager  s    $++--%% 	!OOC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!C     s   AA	A	N)rO   rP   rQ   rR   r  rX   r1   r'   r  r    s-         ! ! ! ! !r1   r  z#Filesystem unicode support requiredc                   $    e Zd ZdZd Zd Zd ZdS )TestUnicodez6
        Feature: Unicode filenames are supported
    c                 >   |                      t          d                    }t          |d          }	 |                     |j        |           |                     |j        t                     |                                 dS # |                                 w xY w)zM Unicode filenames can be used, and retrieved properly via .filename
           prefixr   N)r   chrr	   r   filenameassertIsInstancestrr,   r.   s      r'   test_unicodezTestUnicode.test_unicode  s     3v;;//5#	S\5111!!#,444IIKKKKKCIIKKKKs   ;B Bc                    |                      t          d                    }t          t          j        j                   ddlm} t          d|           t          d|           t          |d          5 }t          t          j
        | j                             ddd           n# 1 swxY w Y   t          j                            |          sJ dS )	zG Unicode filenames can be used, and seen correctly from python
        r  r   r   )WINDOWS_ENCODINGzWindows file encoding in usez	Creating r   N)r   r"  printr   r   infoh5py._hl.compatr(  r	   r   listdirtempdirr   r   )r$   r%   r(  r&   s       r'   #test_unicode_hdf5_python_consistentz/TestUnicode.test_unicode_hdf5_python_consistent  s    3v;;//dl   444444,.>???#%##$$$% 	,"*T\**+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,w~~e$$$$$$$s   :'B--B14B1c                 V   |                      t          d                    }|                     t                    5  t	          |d           ddd           n# 1 swxY w Y   |                     t                    5  t	          |d           ddd           dS # 1 swxY w Y   dS )zV
        Modes 'r' and 'r+' do not create files even when given unicode names
        r  r   r   NrG   )r   r"  r!   r"   r	   rJ   s     r'   test_nonexistent_file_unicodez)TestUnicode.test_nonexistent_file_unicode  s    3v;;//w'' 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	w'' 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AA"A BB"%B"N)rO   rP   rQ   rR   r&  r.  r0  rX   r1   r'   r  r    sK         	 	 	
% 
% 
%    r1   r  c                   $    e Zd ZdZd Zd Zd ZdS )TestFilePropertyzk
        Feature: A File object can be retrieved from any child object,
        via the .file property
    c                     |                                  }t          |d          }	 |d         j        }|                     ||           |                                 dS # |                                 w xY w)z, File object can be retrieved from subgroup r   r   N)r   r	   r   r   r,   )r$   r%   hfilehfile2s       r'   test_propertyzTestFileProperty.test_property  sg    UC  	3Z_FUF+++KKMMMMMEKKMMMMs   #A A5c                 F   |                                  }t          |d          }|                    d          }|j        }|d         j        }|                                 |                     |           |                     |           |                     |           dS )z8 All retrieved File objects are closed at the same time r   r*   r   N)r   r	   r+   r   r,   rC   )r$   r%   r4  grpr5  hfile3s         r'   
test_closezTestFileProperty.test_close  s    UC    ''s        r1   c                    t          |                                 d          }	 |                    d          }|                     |j        j        |j                   |                                 dS # |                                 w xY w)z9 Retrieved File objects have a meaningful mode attribute r   r*   N)r	   r   r+   r   r   r   r,   )r$   r4  r8  s      r'   	test_modezTestFileProperty.test_mode  sp    T[[]]C((	$$U++CSX]EJ777KKMMMMMEKKMMMMs   :A4 4B
N)rO   rP   rQ   rR   r6  r:  r<  rX   r1   r'   r2  r2    sK         
  
! 
! 
!    r1   r2  c                   $    e Zd ZdZd Zd Zd ZdS )	TestClosez*
        Feature: Files can be closed
    c                     t          |                                 d          }|                     |           |                                 |                     |           dS )z Close file via .close method r   N)r	   r   r   r,   rC   r   s     r'   r:  zTestClose.test_close  sR    4;;==#&&		r1   c                    t          |                                 d          }|                                 |                     t                    5  |                    d           ddd           dS # 1 swxY w Y   dS )z0 Trying to modify closed file raises ValueError r   r*   N)r	   r   r,   r!   rD   r+   r   s     r'   test_closed_filezTestClose.test_closed_file  s    4;;==#&&		z** 	$ 	$U###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A44A8;A8c                     |                                  }t          j        |d          }|                    d           |                                 |                                 d S )Nr   test)r   r   r	   r+   r,   r#   s      r'   "test_close_multiple_default_driverz,TestClose.test_close_multiple_default_driver  sP    IeS!!	v										r1   N)rO   rP   rQ   rR   r:  rA  rD  rX   r1   r'   r>  r>    sK           $ $ $    r1   r>  c                       e Zd ZdZd ZdS )	TestFlushz+
        Feature: Files can be flushed
    c                     t          |                                 d          }|                                 |                                 dS )z Flush via .flush method r   N)r	   r   flushr,   r   s     r'   
test_flushzTestFlush.test_flush  s7    4;;==#&&				r1   N)rO   rP   rQ   rR   rI  rX   r1   r'   rF  rF    s-             r1   rF  c                       e Zd ZdZd ZdS )TestReprzE
        Feature: File objects provide a helpful __repr__ string
    c                    t          |                                 d          }|                     t          |          t                     |                                 |                     t          |          t                     dS )z8 __repr__ behaves itself when files are open and closed r   N)r	   r   r$  reprr%  r,   r   s     r'   	test_reprzTestRepr.test_repr  sd    4;;==#&&d3ii---		d3ii-----r1   N)rO   rP   rQ   rR   rN  rX   r1   r'   rK  rK    s-         . . . . .r1   rK  c                       e Zd ZdZd ZdS )TestFilenamezO
        Feature: The name of a File object can be retrieved via .filename
    c                     |                                  }t          |d          }	 |                     |j        |           |                     |j        t
                     |                                 dS # |                                 w xY w)z, .filename behaves properly for string data r   N)r   r	   r   r#  r$  r%  r,   r.   s      r'   test_filenamezTestFilename.test_filename  sv    5#	S\5111!!#,444IIKKKKKCIIKKKKs   ;A7 7BN)rO   rP   rQ   rR   rR  rX   r1   r'   rP  rP    s-             r1   rP  c                       e Zd ZdZd Zd ZdS )!TestCloseInvalidatesOpenObjectIDszO
        Ensure that closing a file invalidates object IDs, as appropriate
    c                    t          |                                 d          5 }|                    d          }|                     t	          |j                             |                     t	          |j                             |                                 |                     t	          |j                             |                     t	          |j                             ddd           n# 1 swxY w Y   t          |                                 d          5 }|                    d          }|                     t	          |j                             |                     t	          |j                             |                     t	          |j                             |                     t	          |j                             ddd           dS # 1 swxY w Y   dS )z; Closing a file invalidates any of the file's open objects r   r*   N)r	   r   r+   r   boolrf   r,   rC   )r$   r   g1r   g2s        r'   r:  z,TestCloseInvalidatesOpenObjectIDs.test_close+  s   $++--%% 	*''BOODKK(((OODKK(((HHJJJT"%[[)))T"%[[)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* $++--%% 	*''BOODKK(((OODKK(((T"%[[)))T"%[[)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s%   CC55C9<C9"B2G!!G%(G%c                    |                                  }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   t          |          }t          |          }|d         }|d         }|j        j        sJ |j        j        sJ |                                 |j        j        rJ |j        j        sJ |j        j        sJ |                                 |j        j        rJ |j        j        rJ d S )Nr   r*   )r   r	   r+   rf   validr,   )r$   r%   r&   r   r   rW  rX  s          r'   test_close_one_handlez7TestCloseInvalidatesOpenObjectIDs.test_close_one_handle;  s6   % 	"NN5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" %[[%[[YYu{{u{{



5;u{{u{{



5;5;s   AAAN)rO   rP   rQ   rR   r:  r[  rX   r1   r'   rT  rT  %  s<         * * *     r1   rT  c                       e Zd ZdZd Zd ZdS )TestPathlibSupportz6
        Check that h5py doesn't break on pathlib
    c                     t                      5 }t          j        |          }t          |d          5 }|                     d           ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z- Check that pathlib is accepted by h5py.File r   TN)r   pathlibPathr	   r   )r$   r&   r   r   s       r'   test_pathlib_accepted_filez-TestPathlibSupport.test_pathlib_accepted_fileV  s     	&!<??DdC &B%%%& & & & & & & & & & & & & & &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s4   %A.A
A.A	A.A	A..A25A2c                 d   t                      5 }t          j        |          }t          |d          5 }|j        }ddd           n# 1 swxY w Y   t          |d          5 }|j        }ddd           n# 1 swxY w Y   |                     ||           ddd           dS # 1 swxY w Y   dS )z1 Check that using pathlib does not affect naming r   N)r   r_  r`  r	   r#  r   )r$   r&   r   h5f1pathlib_nameh5f2normal_names          r'   test_pathlib_name_matchz*TestPathlibSupport.test_pathlib_name_match]  s`    	8!<??DdC -D#}- - - - - - - - - - - - - - -a ,"m, , , , , , , , , , , , , , ,\;777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8sW   %B%AB%A	B%A	B%#A7+B%7A;	;B%>A;	?B%%B),B)N)rO   rP   rQ   rR   ra  rg  rX   r1   r'   r]  r]  Q  s<         & & &8 8 8 8 8r1   r]  c                       e Zd ZdZd ZdS )
TestPicklez%Check that h5py.File can't be pickledc                    t          |                                 d          5 }|                     t                    5  t	          j        |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   )r	   r   r!   r   pickledumps)r$   r   s     r'   test_dump_errorzTestPickle.test_dump_errorj  s    $++--%% 	!""9-- ! !R   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s4   A7AA7A#	#A7&A#	'A77A;>A;N)rO   rP   rQ   rR   rm  rX   r1   r'   ri  ri  h  s)        //! ! ! ! !r1   ri  c                   &    e Zd Zd Zd Zd Zd ZdS )TestMPIc                     ddl m} t          |dd|j                  5 }|sJ |j        dk    sJ 	 ddd           dS # 1 swxY w Y   dS ) MPIO driver and options r   MPIr   mpior   commNmpi4pyrs  r	   
COMM_WORLDr   r$   mpi_file_namers  r&   s       r'   	test_mpiozTestMPI.test_mpiot      -V#.III 	&QHH18v%%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&   ?AAc                     ddl m} t          |dd|j                  5 }|sJ |j        dk    sJ 	 ddd           dS # 1 swxY w Y   dS )z& Testing creation of file with append r   rr  r7   rt  ru  Nrw  rz  s       r'   test_mpio_appendzTestMPI.test_mpio_append|  r}  r~  c                     ddl m} t          |dd|j                  5 }|j        rJ d|_        |j        sJ 	 ddd           dS # 1 swxY w Y   dS )z$ Enable atomic mode for MPIO driver r   rr  r   rt  ru  TN)rx  rs  r	   ry  atomicrz  s       r'   test_mpi_atomiczTestMPI.test_mpi_atomic  s    -V#.III 	Qx<AH8OO8O	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     ddl m} t          |dd|j                  }|                    d           |                                 |                                 dS )rq  r   rr  r   rt  ru  rC  N)rx  rs  r	   ry  r+   r,   rz  s       r'   test_close_multiple_mpio_driverz'TestMPI.test_close_multiple_mpio_driver  s\    FHHH	v										r1   N)rO   rP   rQ   r|  r  r  r  rX   r1   r'   ro  ro  r  sP        & & && & &      r1   ro  c                       e Zd ZdZd Zd ZdS )TestSWMRModez=
        Feature: Create file that switches on SWMR mode
    c                 2   |                                  }t          |dd          }|                    d          }|j        |j        j        cxk    rdk    sn J d|_        |j        |j        j        cxk    rdk    sn J |                                 d S )Nr   r   r   r*   rG   T)r   r	   r+   r   r   	swmr_moder,   r$   r%   r/   gs       r'   test_file_mode_generalizesz'TestSWMRMode.test_file_mode_generalizes  s    5#h///U##x16;....$...... x16;....$......		r1   c                 2   |                                  }t          |dd          }|                    d          }|j        |j        j        cxk    rdk    sn J d|_        |j        |j        j        cxk    rdk    sn J |                                 d S )Nr   r   r   r*   FT)r   r	   r+   r  r   r,   r  s       r'   test_swmr_mode_consistencyz'TestSWMRMode.test_swmr_mode_consistency  s    5#h///U##} 09999E999999} 08888D888888		r1   N)rO   rP   rQ   rR   r  r  rX   r1   r'   r  r    s<         
 
 
    r1   r  )r      r   )r   
      z+Requires HDF5 >= 1.12.1 or 1.10.x >= 1.10.7HDF5_USE_FILE_LOCKINGz&HDF5_USE_FILE_LOCKING env. var. is setc                   $    e Zd ZdZd Zd Zd ZdS )TestFileLockingz"Test h5py.File file locking optionc                    |dz  }t          j        |dd          5 }|                                 t          j        t
                    5  t          j        |dd          5 }	 ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t          j        |dd          5 }	 ddd           n# 1 swxY w Y   t           j        j        dk     r1t          j        |dd	          5 }	 ddd           n# 1 swxY w Y   nat          j        t
                    5  t          j        |dd	          5 }	 ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )
z2Test file locking when opening twice the same filetest.h5r   Tr   lockingr   FNr   best-effort)r   r	   rH  r   r   r"   r   r   )r$   tmp_pathr%   r&   h5f_reads        r'   test_reopenzTestFileLocking.test_reopen  s$   9$Yu3555 	GGIII w''  Yu3>>> (                             5sD999 X               |.;;Yu3FFF (               ]7++  5sMJJJ h                            	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   .E7B#A1%B1A55B8A59B<E7B	E7B	E7*B8,E78B<	<E7?B<	 /E7/C=1E7=D	E7D	E7"E:E<EEEEEE7E#	#E7&E#	'E77E;>E;c                     |dz  }t          j        t                    5  t          j        |dd          5 }	 ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )z&Test with erroneous file locking valuer  r   zunsupported-valuer  N)r   r   rD   r   r	   )r$   r  r%   r  s       r'   test_unsupported_lockingz(TestFileLocking.test_unsupported_locking  s    9$]:&& 	 	5s4GHHH H              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s3   AAAA			AA		AA!$A!c                     |dz  }d }t          j        |dd          5 }d|d<   ddd           n# 1 swxY w Y   t          j        |d	d
          5 } ||dd          sJ 	 ddd           dS # 1 swxY w Y   dS )z<Test file locking option from different concurrent processesr  c                    t          t          j        t          j                  j        j                  }t          j        t          j	        dd|dt          |           d|d| d	gd          }|j
        d	k    o|j         S )
z9Open HDF5 file in a subprocess and return True on successz-cz
import sys
sys.path.insert(0, z)
import h5py
f = h5py.File(z, mode=z
, locking=z)
                    T)capture_outputr   )r%  r_  r`  r   __file__parent
subprocessrunrV   
executable
returncodestderr)r#  r   r  h5py_import_dirprocesss        r'   open_in_subprocessz=TestFileLocking.test_multiprocess.<locals>.open_in_subprocess  s    !',t}"="="D"KLLO nN#  8}}	  (,	  :A	  	  $% % %G %*A7>/AAr1   r   Tr  r   dataNr   F)r   r	   )r$   r  r%   r  r&   s        r'   test_multiprocessz!TestFileLocking.test_multiprocess  s@   9$	B 	B 	B& Yu3555 	AfI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 Yu3666 	E!%%e#tDDDDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   266A33A7:A7N)rO   rP   rQ   rR   r  r  r  rX   r1   r'   r  r    sN         -,  0  E E E E Er1   r  r   r   zlocking_arg,file_locking_props))F)r   r   )T)r   r   )r  )r   r   c                 P   | dz  }| dz  }t          j        |d          5 }d|d<   ddd           n# 1 swxY w Y   t          j        |d          5 }t          j        |d          |d<   ddd           n# 1 swxY w Y   t          j        |d	|
          5 }|j                                                                        }||k    sJ |d         }|j        j                                                                        }||k    sJ 	 ddd           dS # 1 swxY w Y   dS )z5Test that same file locking is used for external linkztest_main.h5ztest_linked.h5r   r   r  Nz/datalinkr   )r  )r   r	   r   rf   r}   get_file_lockingr   )	r  locking_argfile_locking_props
fname_mainfname_elinkr&   locking_infoelink_datasetelink_locking_infos	            r'   test_file_locking_external_linkr    s   $ N*J--K 
;	$	$ &	              	:s	#	# <q%k7;;&	< < < < < < < < < < < < < < < 
:sK	8	8	8 8At,,..??AA11111 &	*/2CCEEVVXX!%7777778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s1   266A77A;>A;A4DD"Dc                 j   t          d          D ]}g | t          |          <   | j        }|                                  t          d          D ]c}t	          j        |d          5 }d |                                D             }|                    |           ~d d d            n# 1 swxY w Y   dd S )Nr]   r  r   c                     g | ]	}|j         
S rX   )rf   ).0ds     r'   
<listcomp>z!test_close_gc.<locals>.<listcomp>-  s    ---QAD---r1   )ranger%  r#  r,   r   r	   valuesappend)writable_fileir#  r&   refss        r'   test_close_gcr     s    3ZZ # # "c!ff%H
 2YY  Yx%% 	--!((**---DKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   &5B''B+	.B+	)3rR   r   r   r   rk  r   r  rV   commonr   r   r   r   h5py._hl.filesr   r   r	    r   r_  r   rZ   rS   mpi_skiprn   r   r   rT   r   r   r   r  r  r   r  r2  r>  rF  rK  rP  rT  r]  ri  mpiro  r  environr  parametrizer  r  rX   r1   r'   <module>r     s%     				        



 D D D D D D D D D D D D % % % % % %              |, |, |, |, |,8 |, |, |,~# # # # # # # #L IB IB IB IB IB IB IB IBX( ( ( ( ( ( ( (VZ Z Z Z Z( Z Z Z~ L#A&*a/%   = = = = =H = =	 =@] ] ] ] ]H ] ] ]@
! 
! 
! 
! 
! 
! 
! 
!   "GHH% % % % %( % % IH%P$ $ $ $ $x $ $ $N       8
 
 
 
 
 
 
 
. . . . .x . . .    8   ") ) ) ) ) ) ) )X8 8 8 8 8 8 8 8.! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !H    8   : L#j0 ^L#BQB'72\dl6UVW6X[\6\8  : : +rz9C  E E>E >E >E >E >E >E >EE E	: :>EB L#j0$    rz)3    $   8 8 	 	  8*    r1   