
    1Vh)                         d Z ddlZddlmZ ddlmZ ddlmZmZ ddlZddl	Z	ddl
Z
ddlZd Zd 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y)z!
    Tests the h5py.File object.
    N_drivers)File   )utTestCasec                      t         j                  j                  t         j                  j                  t         j                  j                        S N)h5pyh5fget_obj_countOBJ_ALLOBJ_FILE     E/home/dcms/DCMS/lib/python3.12/site-packages/h5py/tests/test_file2.pynfilesr      s-    88!!$(("2"2DHH4E4EFFr   c                      t         j                  j                  t         j                  j                  t         j                  j                        S r
   )r   r   r   r   	OBJ_GROUPr   r   r   ngroupsr      s-    88!!$(("2"2DHH4F4FGGr   c                       e Zd ZdZd Zy)TestDealloczj
        Behavior on object deallocation.  Note most of this behavior is
        delegated to FileID.
    c                    t               }t               }| j                         }t        j                  |d      }|d   }| j                  t               |dz          | j                  t               |dz          ~| j                  |       | j                  t               |       | j                  t               |dz          |j                  }| j                  |       | j                  t               |dz          | j                  t               |dz          ~| j                  t               |dz          | j                  t               |       ~| j                  t               |       | j                  t               |       y)z\ File objects close automatically when out of scope, but
        other objects remain open. w/r   N)r   r   mktempr   r   assertEqual
assertTruefile)selfstart_nfilesstart_ngroupsfnamefgs         r   test_autoclosezTestDealloc.test_autoclose(   s,    x	IIeS!cF<>2M!O4<0M!O4FF<>2M!O4<>2M2<0M2r   N)__name__
__module____qualname____doc__r&   r   r   r   r   r   !   s    
"3r   r   c                       e Zd Zd Zd Zy)TestDriverRegistrationc                    d gfd}t        j                  d|       | j                  dt        j                                | j	                         }t        j
                  |dddd       | j                  ddddfg       y )	Nc                 .    ||fd<   t        d   |       S )Nr   sec2r   )plistargskwargscalled_withs      r   set_faplz=TestDriverRegistration.test_register_driver.<locals>.set_faplQ   s     !6\KNF#E**r   
new-driverr   r   r   )driverdriver_arg_0driver_arg_1moder   )r7   r8   )r   register_driverassertInregistered_driversr   r   r   )r    r4   r#   r3   s      @r   test_register_driverz+TestDriverRegistration.test_register_driverN   s}    f	+ 	\84lD$;$;$=>		%11	 	1a89:	
r   c                    t        j                  dd        | j                  dt        j                                t        j                  d       | j                  dt        j                                | j                  t              5 }| j                         }t        j                  |dd       d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nr5   c                      y r
   r   )r0   s    r   <lambda>z?TestDriverRegistration.test_unregister_driver.<locals>.<lambda>b   s    r   r   r6   r9   z Unknown driver type "new-driver")r   r:   r;   r<   unregister_driverassertNotInassertRaises
ValueErrorr   r   r   str	exception)r    er#   s      r   test_unregister_driverz-TestDriverRegistration.test_unregister_drivera   s    \+=>lD$;$;$=>|,t'>'>'@Az* 	<aKKMEIIeLs;	< 	Q[[)+MN		< 	<s   
)C!!C*N)r'   r(   r)   r=   rI   r   r   r   r,   r,   M   s    
&Or   r,   c                   $    e Zd Zd Zd Zd Zd Zy)	TestCachec                     | j                         }t        j                  |d      }| j                  t	        |j
                  j                         j                               g d       y )Nr   )r   	           ?r   r   r   r   listidget_access_plist	get_cacher    r#   r$   s      r   test_defaultszTestCache.test_defaultsp   sK    IIeS!add335??AB0	2r   c                     | j                         }t        j                  |dd      }| j                  t	        |j
                  j                         j                               g d       y )Nr      )rdcc_nbytes)r   rM   rX   rO   rP   rU   s      r   test_nbyteszTestCache.test_nbytesv   sM    IIeSd3add335??AB-	/r   c                     | j                         }t        j                  |dd      }| j                  t	        |j
                  j                         j                               g d       y )Nr   }   )rdcc_nslots)r   r\   rN   rO   rP   rU   s      r   test_nslotszTestCache.test_nslots|   sM    IIeSc2add335??AB0	2r   c                     | j                         }t        j                  |dd      }| j                  t	        |j
                  j                         j                               g d       y )Nr         ?)rdcc_w0)r   rM   rN   r`   rP   rU   s      r   test_w0zTestCache.test_w0   sM    IIeS$/add335??AB0	2r   N)r'   r(   r)   rV   rZ   r^   rb   r   r   r   rK   rK   o   s    2/22r   rK   c                       e Zd Zd Zd Zd Zd Zej                  j                  d      d        Z
d Zd Zd	 Z ej                  d
      d        Zd Zd Zy)TestFileObjc                    t        j                  |d      }| j                  |j                  d       | j                  |j                  t        |             |j                  dt        t        d                   | j                  t        |      dg       | j                  t        |d   d d        t        t        d                   |j                          y )Nr   fileobjtest   data)
r   r   r   r6   filenamereprcreate_datasetrQ   rangecloser    rf   r$   s      r   check_writezTestFileObj.check_write   s    IIgs#9-T']3	d59o6a6(+ail+T%)_=		r   c           
      X   t        j                  |d      }| j                  t        |      dg       | j                  t        |d   d d        t        t	        d                   | j                  t        |j                  dt        t	        d                   |j                          y )Nrrg   rh   zanother.test   ri   )	r   r   r   rQ   rn   rD   	Exceptionrm   ro   rp   s      r   
check_readzTestFileObj.check_read   s~    IIgs#a6(+ail+T%)_=)Q%5%5~DQVWXQYN[		r   c                 >   t        j                         5 }| j                  t        |j	                               d       | j                  |       | j                  t        |j	                               d       | j                  |       d d d        y # 1 sw Y   y xY w)Nr   )ioBytesIOr   lengetvaluerq   assertGreaterrv   )r    rf   s     r   test_BytesIOzTestFileObj.test_BytesIO   sx    ZZ\ 	%WS!1!1!34a8W%s7#3#3#56:OOG$		% 	% 	%s   A5BBc                 *   | j                         }	 t        |d      5 }| j                  t        j                  j                  |      d       | j                  |       | j                  t        j                  j                  |      d       | j                  |       d d d        t        |d      5 }| j                  |       d d d        t        j                  |       y # 1 sw Y   ExY w# 1 sw Y   +xY w# t        j                  |       w xY w)Nzwb+r   rb)
r   openr   ospathgetsizerq   r|   rv   remove)r    r#   rf   s      r   	test_filezTestFileObj.test_file   s    		eU# )w  !7;  )""277??5#91=(	)
 eT" )g() IIe) )
) ) IIes;   C; BC#C; 3C/C; #C,(C; /C84C; ;Dz$ignore:unclosed file:ResourceWarningc                 2   t        j                         }|j                  }t        j                  |d      }~|j                  dt        t        d                   | j                  t        |      dg       | j                  t        |d   d d        t        t        d                   | j                  t        j                  j                  |             |j                          | j                  t        j                  j                  |             y Nr   rg   rh   ri   )tempfileNamedTemporaryFilenamer   r   rm   rQ   rn   r   r   r   r   isfilero   assertFalse)r    rf   r#   r$   s       r   test_TemporaryFilezTestFileObj.test_TemporaryFile   s     --/IIgs# 	
d59o6a6(+ail+T%)_=u-.		./r   c                     | j                  t        t        j                  d dd       | j                  t        t        j                  ddd       | j                  t        t        j                  | dd       y )Nrf   xrA   rogue)rD   ru   r   r   )r    s    r   test_exception_openzTestFileObj.test_exception_open   sh    )TYY!* 	 	6)TYY!* 	 	6)TYY!* 	 	6r   c                      G d dt         j                        }t        j                   |       d      }|j	                  dt        t        d                   | j                  t        t
        |d          y )Nc                       e Zd Zd Zy)6TestFileObj.test_exception_read.<locals>.BrokenBytesIOc                     t        d      NzI am broken)ru   )r    bs     r   readintoz?TestFileObj.test_exception_read.<locals>.BrokenBytesIO.readinto   s    ..r   N)r'   r(   r)   r   r   r   r   BrokenBytesIOr      s    /r   r   r   rg   rh   ri   )	rx   ry   r   r   rm   rQ   rn   rD   ru   )r    r   r$   s      r   test_exception_readzTestFileObj.test_exception_read   sW    	/BJJ 	/ IImos+	d59o6)T1V95r   c           
      B    G d dt         j                        } |       }t        j                  |d      }	 | j	                  t
        |j                  dt        t        d                   d|_	        |j                          y # d|_	        |j                          w xY w)Nc                   "     e Zd ZdZ fdZ xZS )7TestFileObj.test_exception_write.<locals>.BrokenBytesIOFc                 P    | j                   rt        | 	  |      S t        d      r   )allow_writesuperwriteru   )r    r   	__class__s     r   r   z=TestFileObj.test_exception_write.<locals>.BrokenBytesIO.write   s&    ## 7=++#M22r   )r'   r(   r)   r   r   __classcell__)r   s   @r   r   r      s    K3 3r   r   r   rg   rh   ri   T)rx   ry   r   r   rD   ru   rm   rQ   rn   r   ro   )r    r   bior$   s       r   test_exception_writez TestFileObj.test_exception_write   s    	3BJJ 	3 oIIc3	i)9)96#'b	?  4 #COGGI #COGGIs   5B Bz-Incompletely closed files can cause segfaultsc                     t        j                         }t        j                  |d      }|j	                          | j                  t        |j                         y )Nr   )rx   ry   r   r   ro   rD   ru   rp   s      r   test_exception_closez TestFileObj.test_exception_close   s:    **,IIgs#)QWW-r   c                    t        t        j                  j                  | j                  d      d      }t        j                  |d      }|j                  d      }| j                  t        j                        5  |j                  ddt        j                                d d d        |j                          |j                          y # 1 sw Y   *xY w)Nza.h5wbr   grouprj   foo)rj   dtype)r   r   r   jointempdirr   r   create_grouprD   rx   UnsupportedOperationrm   string_dtypero   )r    rf   r$   r   s       r   test_exception_writeonlyz$TestFileObj.test_exception_writeonly   s     rww||DLL&94@IIgs#w'r667 	P  e4;L;L;N O	P			P 	Ps   ;'CCc                 R   t        j                         }t        j                  |d      }|j	                  dt        t        d                   | j                  t        |d   d d        t        t        d                   d |_        | j                  t        t
        |d          y r   )rx   ry   r   r   rm   rQ   rn   r   r   rD   ru   rp   s      r   test_method_vanishzTestFileObj.test_method_vanish   s{    **,IIgs#	d59o6ail+T%)_=)T1V95r   N)r'   r(   r)   rq   rv   r}   r   pytestmarkfilterwarningsr   r   r   r   r   skipr   r   r   r   r   r   rd   rd      sw    % [[ 	/
0
0"66( RWW<=. >.	6r   rd   c                       e Zd Zd Zd Zd Zy)TestTrackOrderc                     t        d      D ]4  }|dz  dk(  r|j                  t        |             &|g|t        |      <   6 y )Nd   
   r   )rn   r   rF   )r    r$   is      r   populatezTestTrackOrder.populate  s?    s 	 A2v{s1v&C#a&		 r   c           	         | j                         }t        j                  |dd      }| j                  |       | j	                  t        |      t        d      D cg c]  }t        |       c}       |j                          t        j                  |      }| j	                  t        |      t        d      D cg c]  }t        |       c}       y c c}w c c}w )Nr   Ttrack_orderr   )	r   r   r   r   r   rQ   rn   rF   ro   )r    r#   r$   r   f2s        r   test_track_orderzTestTrackOrder.test_track_order  s    IIeSd3aa5:">a3q6">?		 YYubE#J#?qCF#?@ #?
 $@s   C
<C
c                    | j                         }t        j                  |dd      }| j                  |       | j	                  t        |      t        t        d      D cg c]  }t        |       c}             y c c}w )Nr   Fr   r   )	r   r   r   r   r   rQ   sortedrn   rF   )r    r#   r$   r   s       r   test_no_track_orderz"TestTrackOrder.test_no_track_order  s]    IIeSe4aas <AQ <=	? <s   !A?N)r'   r(   r)   r   r   r   r   r   r   r   r     s     	A?r   r   c                       e Zd ZdZd Zd Zy)TestFileMetaBlockSizez
        Feature: The meta block size can be manipulated, changing how metadata
        is aggregated and the offset of the first dataset.
    c                    d}t        | j                         d|d      5 }d|d<   | j                  |j                  |       | j	                  |d   j
                  j                         |       d d d        y # 1 sw Y   y xY w)Ni   r   latestmeta_block_sizelibver   rg   )r   r   r   r   assertGreaterEqualrR   
get_offset)r    r   r$   s      r   *test_file_create_with_meta_block_size_4096z@TestFileMetaBlockSize.test_file_create_with_meta_block_size_4096*  s~    KKM3+
 	P AfIQ..@##AfILL$;$;$=O	P 	P 	Ps   AA88Bc                 l   d}d}t        | j                         d||      5 }d|d<   | j                  |j                  |       | j	                  |d   j
                  j                         |       | j                  |d   j
                  j                         |dz         d d d        y # 1 sw Y   y xY w)Ni   r   r   r   rt   rg      )r   r   r   r   r   rR   r   
assertLess)r    r   r   r$   s       r   )test_file_create_with_meta_block_size_512z?TestFileMetaBlockSize.test_file_create_with_meta_block_size_5127  s     KKM3+
 
	J AfIQ..@##AfILL$;$;$=OOOAfILL335q7HI
	J 
	J 
	Js   A?B**B3N)r'   r(   r)   r*   r   r   r   r   r   r   r   #  s    
PJr   r   )r*   r   h5py._hl.filesr   r   commonr   r   r   rx   r   r   r   r   r   r,   rK   rd   r   r   r   r   r   <module>r      s     #     	  	GH)3( )3XOX OD2 24{6( {6|?X ?8#JH #Jr   