
    j+                        d Z ddlZddlmZ ddlmZ ddlmZ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dS )z!
    Tests the h5py.File object.
    N_drivers)File   )utTestCase	make_namec                  ~    t           j                            t           j        j        t           j        j                  S N)h5pyh5fget_obj_countOBJ_ALLOBJ_FILE     X/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/h5py/tests/test_file2.pynfilesr      s$    8!!$("2DH4EFFFr   c                  ~    t           j                            t           j        j        t           j        j                  S r   )r   r   r   r   	OBJ_GROUPr   r   r   ngroupsr      s$    8!!$("2DH4FGGGr   c                   Z    e Zd ZdZej                            d          d             ZdS )TestDealloczj
        Behavior on object deallocation.  Note most of this behavior is
        delegated to FileID.
    zglobal object counters)reasonc                    t                      }t                      }|                                 }t          j        |d          }|d         }|                     t                      |dz              |                     t                      |dz              ~|                     |           |                     t                      |           |                     t                      |dz              |j        }|                     |           |                     t                      |dz              |                     t                      |dz              ~|                     t                      |dz              |                     t                      |           ~|                     t                      |           |                     t                      |           dS )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   
 xx		IeS!!cF<>222M!O444<000M!O444F<>222M!O444<>222M222<000M22222r   N)__name__
__module____qualname____doc__pytestmarkthread_unsafer(   r   r   r   r   r   !   sO          [&>??"3 "3 @?"3 "3 "3r   r   c                       e Zd Zd Zd ZdS )TestDriverRegistrationc                 >   d gfd}t                      }t          j        ||           |                     |t          j                               |                                 }t          j        ||ddd           |                     ddddfg           d S )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   r   r   r   )driverdriver_arg_0driver_arg_1moder   )r;   r<   )r	   r   register_driverassertInregistered_driversr   r   r   )r"   r9   namer%   r8   s       @r   test_register_driverz+TestDriverRegistration.test_register_driverN   s    f	+ 	+ 	+ 	+ 	+ {{T8,,,dD355666	%11	 	 	 	 	1a889:	
 	
 	
 	
 	
r   c                 $   t                      }t          j        |d            |                     |t          j                               t          j        |           |                     |t          j                               |                     t                    5 }| 	                                }t          j
        ||d           d d d            n# 1 swxY w Y   |                     t          |j                  d| d           d S )Nc                     d S r   r   )r5   s    r   <lambda>z?TestDriverRegistration.test_unregister_driver.<locals>.<lambda>d   s     r   r   r:   r=   zUnknown driver type '')r	   r   r>   r?   r@   unregister_driverassertNotInassertRaises
ValueErrorr   r   r   str	exception)r"   rA   er%   s       r   test_unregister_driverz-TestDriverRegistration.test_unregister_driverb   s-   {{T#5#5666dD355666t$$$t688999z** 	4aKKMMEIeDs3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	Q[))+J4+J+J+JKKKKKs   !,CC CN)r)   r*   r+   rB   rO   r   r   r   r1   r1   M   s7        
 
 
(L L L L Lr   r1   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )	TestCachec                 v    d}t           j        j        dk     r|| _        d| _        d S d|z  | _        d| _        d S )Ni   )   r   r   i	     i  )r   versionhdf5_version_tupledflt_chunk_cachedflt_chunk_nslots)r"   MiBs     r   setUpzTestCache.setUpr   sG    <*Y66$'D!%(D"""$%GD!%)D"""r   c                    |                                  }t          j        |d          }|                     t	          |j                                                                                  d| j        | j	        dg           d S )Nr   r         ?
r   r   r   r   listidget_access_plist	get_cacherX   rW   r"   r%   r&   s      r   test_defaultszTestCache.test_defaults{   s}    IeS!!ad3355??AABBT3T5JDQ	S 	S 	S 	S 	Sr   c                    |                                  }t          j        |dd          }|                     t	          |j                                                                                  d| j        ddg           d S )Nr   i   )rdcc_nbytesr   r\   )	r   r   r   r   r^   r_   r`   ra   rX   rb   s      r   test_nbyteszTestCache.test_nbytes   s    IeSd333ad3355??AABBT3T4@	B 	B 	B 	B 	Br   c                    |                                  }t          j        |dd          }|                     t	          |j                                                                                  dd| j        dg           d S )Nr   }   )rdcc_nslotsr   r\   )	r   r   r   r   r^   r_   r`   ra   rW   rb   s      r   test_nslotszTestCache.test_nslots   s    IeSc222ad3355??AABBS$"7>	@ 	@ 	@ 	@ 	@r   c                    |                                  }t          j        |dd          }|                     t	          |j                                                                                  d| j        | j	        dg           d S )Nr   g      ?)rdcc_w0r   r]   rb   s      r   test_w0zTestCache.test_w0   s    IeS$///ad3355??AABBT3T5JDQ	S 	S 	S 	S 	Sr   N)r)   r*   r+   rZ   rc   rf   rj   rm   r   r   r   rQ   rQ   q   sm        * * *S S SB B B@ @ @S S S S Sr   rQ   c                       e Zd Zd Zd Zd Zd Zej        	                    d          d             Z
d Zd Zd	 Z ej        d
          d             Zd Zd ZdS )TestFileObjc                    t          j        |d          }|                     |j        d           |                     |j        t          |                     |                    dt          t          d                               |                     t          |          dg           |                     t          |d         d d                    t          t          d                               |	                                 d S )Nr   fileobjtest   data)
r   r   r   r:   filenamereprcreate_datasetr^   rangecloser"   rq   r&   s      r   check_writezTestFileObj.check_write   s    Igs##9---T']]333	d599oo666a6(+++ail++T%))__===						r   c           
         t          j        |d          }|                     t          |          dg           |                     t          |d         d d                    t          t	          d                               |                     t          |j        dt          t	          d                               |                                 d S )Nrrr   rs   zanother.test   rt   )	r   r   r   r^   ry   rJ   	Exceptionrx   rz   r{   s      r   
check_readzTestFileObj.check_read   s    Igs##a6(+++ail++T%))__===)Q%5~DQVWXQYQYNN[[[						r   c                    t          j                    5 }|                     t          |                                          d           |                     |           |                     t          |                                          d           |                     |           d d d            d S # 1 swxY w Y   d S )Nr   )ioBytesIOr   lengetvaluer|   assertGreaterr   )r"   rq   s     r   test_BytesIOzTestFileObj.test_BytesIO   s    Z\\ 	%WS!1!1!3!344a888W%%%s7#3#3#5#566:::OOG$$$		% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   BB66B:=B:c                 t   |                                  }	 t          |d          5 }|                     t          j                            |          d           |                     |           |                     t          j                            |          d           |                     |           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	        |           d S # t          j	        |           w xY w)Nzwb+r   rb)
r   openr   ospathgetsizer|   r   r   remove)r"   r%   rq   s      r   	test_filezTestFileObj.test_file   s   		eU## )w  !7!7;;;  )))""27??5#9#91===(((	) ) ) ) ) ) ) ) ) ) ) ) ) ) )
 eT"" )g((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) IeBIesS   D! BC7D! CD! 
CD! D 4D!  DD! DD! !D7zignore::ResourceWarningc                    t          j                    }|j        }t          j        |d          }~|                    dt          t          d                               |                     t          |          dg           |                     t          |d         d d                    t          t          d                               | 	                    t          j                            |                     |                                 |                     t          j                            |                     d S Nr   rr   rs   rt   )tempfileNamedTemporaryFilerA   r   r   rx   r^   ry   r   r    r   r   isfilerz   assertFalse)r"   rq   r%   r&   s       r   test_TemporaryFilezTestFileObj.test_TemporaryFile   s     -//Igs## 	
d599oo666a6(+++ail++T%))__===u--...				../////r   c                     |                      t          t          j        d dd           |                      t          t          j        ddd           |                      t          t          j        | dd           d S )Nrq   xrF   rogue)rJ   r   r   r   )r"   s    r   test_exception_openzTestFileObj.test_exception_open   s    )TY!* 	 	6 	6 	6)TY!* 	 	6 	6 	6)TY!* 	 	6 	6 	6 	6 	6r   c                      G d dt           j                  }t          j         |            d          }|                    dt          t          d                               |                     t          t
          |d                    d S )Nc                       e Zd Zd ZdS )6TestFileObj.test_exception_read.<locals>.BrokenBytesIOc                      t          d          NzI am broken)r   )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   rr   rs   rt   )	r   r   r   r   rx   r^   ry   rJ   r   )r"   r   r&   s      r   test_exception_readzTestFileObj.test_exception_read   s    	/ 	/ 	/ 	/ 	/BJ 	/ 	/ 	/ Immoos++	d599oo666)T1V955555r   c           
      f    G d dt           j                  } |            }t          j        |d          }	 |                     t
          |j        dt          t          d                               d|_	        |
                                 d S # d|_	        |
                                 w xY w)Nc                   "     e Zd ZdZ fdZ xZS )7TestFileObj.test_exception_write.<locals>.BrokenBytesIOFc                 r    | j         r!t                                          |          S t          d          r   )allow_writesuperwriter   )r"   r   	__class__s     r   r   z=TestFileObj.test_exception_write.<locals>.BrokenBytesIO.write   s2    # 3 77==+++#M222r   )r)   r*   r+   r   r   __classcell__)r   s   @r   r   r      s=        K3 3 3 3 3 3 3 3 3r   r   r   rr   rs   rt   T)r   r   r   r   rJ   r   rx   r^   ry   r   rz   )r"   r   bior&   s       r   test_exception_writez TestFileObj.test_exception_write   s    	3 	3 	3 	3 	3BJ 	3 	3 	3 mooIc3	i)96#'b		??  4 4 4 #COGGIIIII #COGGIIIIs   =B B0z-Incompletely closed files can cause segfaultsc                     t          j                    }t          j        |d          }|                                 |                     t          |j                   d S )Nr   )r   r   r   r   rz   rJ   r   r{   s      r   test_exception_closez TestFileObj.test_exception_close   sI    *,,Igs##)QW-----r   c                    t          t          j                            | j        t          d                    d          }t          j        |d          }|                    d          }| 	                    t          j                  5  |                    ddt          j                               d d d            n# 1 swxY w Y   |                                 |                                 d S )Nzfoo{}.h5wbr   groupru   foo)ru   dtype)r   r   r   jointempdirr	   r   r   create_grouprJ   r   UnsupportedOperationrx   string_dtyperz   )r"   rq   r&   r   s       r   test_exception_writeonlyz$TestFileObj.test_exception_writeonly   s    rw||DL)J2G2GHH$OOIgs##w''r677 	P 	P  e4;L;N;N OOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P				s   
*C  CCc                    t          j                    }t          j        |d          }|                    dt          t          d                               |                     t          |d         d d                    t          t          d                               d |_        | 	                    t          t
          |d                    d S r   )r   r   r   r   rx   r^   ry   r   r   rJ   r   r{   s      r   test_method_vanishzTestFileObj.test_method_vanish	  s    *,,Igs##	d599oo666ail++T%))__===)T1V955555r   N)r)   r*   r+   r|   r   r   r   r-   r.   filterwarningsr   r   r   r   r   skipr   r   r   r   r   r   ro   ro      s            % % %   [ 	" 
0 0 
0"6 6 66 6 6  ( RW<==. . >=.	 	 	6 6 6 6 6r   ro   c                        e Zd Zd Zd Zd ZdS )TestTrackOrderc                     t          d          D ]A}|dz  dk    r#|                    t          |                     .|g|t          |          <   Bd S )Nd   
   r   )ry   r   rL   )r"   r&   is      r   populatezTestTrackOrder.populate  s\    s 	  	 A2v{{s1vv&&&&C#a&&			  	 r   c                    |                                  }t          j        |dd          }|                     |           |                     t          |          d t          d          D                        |                                 t          j        |          }|                     t          |          d t          d          D                        d S )Nr   Ttrack_orderc                 ,    g | ]}t          |          S r   rL   .0r   s     r   
<listcomp>z3TestTrackOrder.test_track_order.<locals>.<listcomp>  s    ">">">a3q66">">">r   r   c                 ,    g | ]}t          |          S r   r   r   s     r   r   z3TestTrackOrder.test_track_order.<locals>.<listcomp>$  s    #?#?#?qCFF#?#?#?r   )r   r   r   r   r   r^   ry   rz   )r"   r%   r&   f2s       r   test_track_orderzTestTrackOrder.test_track_order  s    IeSd333aa">">5::">">">???				 Yub#?#?E#JJ#?#?#?@@@@@r   c           	         |                                  }t          j        |dd          }|                     |           |                     t          |          t          d t          d          D                                  d S )Nr   Fr   c                 ,    g | ]}t          |          S r   r   r   s     r   r   z6TestTrackOrder.test_no_track_order.<locals>.<listcomp>+  s     < < <AQ < < <r   r   )r   r   r   r   r   r^   sortedry   rb   s      r   test_no_track_orderz"TestTrackOrder.test_no_track_order&  s    IeSe444aa < <s < < <==	? 	? 	? 	? 	?r   N)r)   r*   r+   r   r   r   r   r   r   r   r     sD             	A 	A 	A? ? ? ? ?r   r   c                       e Zd ZdZd Zd ZdS )TestFileMetaBlockSizez
        Feature: The meta block size can be manipulated, changing how metadata
        is aggregated and the offset of the first dataset.
    c                 ,   d}t          |                                 d|d          5 }d|d<   |                     |j        |           |                     |d         j                                        |           d d d            d S # 1 swxY w Y   d S )Ni   r   latestmeta_block_sizelibver   rr   )r   r   r   r   assertGreaterEqualr_   
get_offset)r"   r   r&   s      r   *test_file_create_with_meta_block_size_4096z@TestFileMetaBlockSize.test_file_create_with_meta_block_size_40965  s    KKMM3+
 
 
 	P AfIQ.@@@##AfIL$;$;$=$=OOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	Ps   AB		BBc                    d}d}t          |                                 d||          5 }d|d<   |                     |j        |           |                     |d         j                                        |           |                     |d         j                                        |dz             d d d            d S # 1 swxY w Y   d S )Ni   r   r   r   r   rr   rS   )r   r   r   r   r   r_   r   
assertLess)r"   r   r   r&   s       r   )test_file_create_with_meta_block_size_512z?TestFileMetaBlockSize.test_file_create_with_meta_block_size_512B  s"    KKMM3+
 
 
 
	J AfIQ.@@@##AfIL$;$;$=$=OOOOOAfIL3355q7HIII
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	J 
	Js   B
CCCN)r)   r*   r+   r,   r   r   r   r   r   r   r   .  sD         
P P PJ J J J Jr   r   )r,   r   h5py._hl.filesr   r   commonr   r   r	   r-   r   r   r   r   r   r   r1   rQ   ro   r   r   r   r   r   <module>r      s     # # # # # #       + + + + + + + + + +  				  				G G GH H H)3 )3 )3 )3 )3( )3 )3 )3X!L !L !L !L !LX !L !L !LH S  S  S  S  S  S  S  SF{6 {6 {6 {6 {6( {6 {6 {6|? ? ? ? ?X ? ? ?8#J #J #J #J #JH #J #J #J #J #Jr   