
    j4                     H   d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlmZ  e            Zej                            ej        j        dk     d	
          ej                            ej         d
          gZej                             eed           d
          Zej        dk    rej        nej        Zej                            d ej        ddej                   ej        ddej        d           ej        ddej        d           ej        ddej        d           ej        ddej        d           ej        ddej        d           ej        dded            ej        d!ded"           ej        d#d$ed%e&          g	          d'             Z ej        dd(d(           ej        dd)d)           ej        dd*d*           ej        dd+d+           ej        dd,d,           ej        d!d-d-           ej        d#d.d.e&          gZej                            d/e          d0             Zd1 Zej                            d2g d3          d4             Z ej                            d/e          d5             Z!d6 Z"dS )7z*
Testing native complex number datatypes.
    N)
get_config)h5t   )	make_name)get_data_file_path)   r   r   zRequires HDF5 >= 2.0)reasonz2Native HDF5 complex number datatypes not available
complex256z)complex256 type is not available in numpybigzh5type_str, size, orderCOMPLEX_IEEE_F16LE   COMPLEX_IEEE_F16BEF16BE)idCOMPLEX_IEEE_F32LE   F32LECOMPLEX_IEEE_F32BEF32BECOMPLEX_IEEE_F64LE   F64LECOMPLEX_IEEE_F64BEF64BENATIVE_FLOAT_COMPLEXzfloat-nativeNATIVE_DOUBLE_COMPLEXzdouble-nativeNATIVE_LDOUBLE_COMPLEX    zlong-native)r   marksc                     t          t          |           }t          |t          j                  sJ |                                |k    sJ |                                |k    sJ dS )z8Low-level checks of HDF5 native complex number datatypesN)getattrr   
isinstanceTypeComplexIDget_size	get_order)
h5type_strsizeorderh5types       a/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/h5py/tests/test_native_complex.pytest_hdf5_dtyper+   .   sj    ( S*%%Ffc/00000??$$$$&&&&&&    <c8>c8<c16>c16z=c8z=c16z=c32zh5type_str, dtc                 j    t          t          |           j        t          j        |          k    sJ dS )z<Translate native HDF5 complex number datatype to NumPy dtypeN)r!   r   dtypenp)r&   dts     r*   test_cmplx_type_trnsltr5   T   s0     3
##)RXb\\999999r,   c                 R   t          | t          j                  sJ |                                 dk    sJ |                     d          t
          j        k    sJ |                     d          t
          j        k    sJ t          |                     d          t          j	                  sJ t          |                     d          t          j	                  sJ |                     d          
                                |                     d          
                                z   |j        k    sJ |j        t          j        fxx  r dk    r	\  dk    r n x  r dk    r\  dk    rdk    rn  n  t          j        }nFxx  r dk    r	\  dk    r n x  r dk    r\  dk    rdk    rn  n  t          j        }n
x }t           |                     d                                          |k    sJ |                     d                                          |k    sJ d	S )
z$Check h5py's old complex number typer   r   r   >=r   <littleN)r"   r   TypeCompoundIDget_nmembersget_member_namecfg_r_name_i_nameget_member_typeTypeFloatIDr$   itemsize	byteordersysORDER_BEORDER_LEAssertionErrorr%   )datatypenp_dtypeexpected_unreachables       r*   check_compound_complex_datatyperM   Z   s9   h 233333  ""a''''##A&&#+5555##A&&#+5555h..q113?CCCCCh..q113?CCCCC ""++--		!	!!	$	$	-	-	/	/0		   
 s}
-$XXXXXXXXccc111eeeeeeeee|HH'XXXXXXXXccc111hhhhhhhhh|HHQQ  ##A&&0022h>>>>##A&&0022h>>>>>>r,   r4   )r-   r.   r/   r0   c                    t           j                            d          dt           j                            d          z  z                       |          }|                     t          |          |          }t          j        d|          }||j        d<   t          |j	        
                                t          j        |                     t          |j                            d          
                                t          j        |                     t           j                            |d         |           t           j                            |j        d         |           dS )	z<Test default translation when creating datasets & attributesd                 ?)dataffffff?@r2   c.N)r3   randomrandastypecreate_datasetr   arrayattrsrM   r   get_typer2   get_idtestingassert_array_equal)writable_filer4   complex_arraydsrT   s        r*   test_default_createrb   t   s    Y^^C((2	s0C0C+CCKKBOOM		%	%imm-	%	H	HB
r***ABHSM#BENN$4$4bhrllCCC#BHOOC$8$8$A$A$C$CRXb\\RRRJ!!"S'=999J!!"(3-33333r,   c                    t          t          |          }t          j        |          }t          j                            d          dt          j                            d          z  z                       |          }|                     t          |          dt          j
        |                    }||dd<   t          j        d|          }|j                            d|t          j
        |                     t          |j                                        t          j                  sJ t          |j                            d                                          t          j                  sJ t          j                            |d         |           t          j                            |j        d         |           dS )	zFExplicitly use native complex datatype to create datasets & attributesrO   rP   )rO   rS   NrR   rT   .)r!   r   r3   r2   rU   rV   rW   rX   r   h5pyDatatyperY   rZ   creater"   r   r[   r#   r\   r]   r^   )r_   r&   r4   r)   np_dtr`   ra   rT   s           r*   test_explicit_createrh      sa    S*%%FHRLLEY^^C((2	s0C0C+CCKKERRM		%	%immV4=QWCXCX	%	Y	YBBqqqE
u---AHOOC$-"7"7O888benn&&(9:::::bhooc**3355s7HIIIIIJ!!"S'=999J!!"(3-33333r,   c                  $   t          j        t          d          d          5 } t          d |                                           D ].}t          |j                                        |j                   /	 ddd           dS # 1 swxY w Y   dS )zKCheck the resulting dtype of the two-field compound data as complex numberszcompound-dtype-complex.h5r)modec                 6    t          | t          j                  S )N)r"   rd   Dataset)objs    r*   <lambda>z(test_dtype_cmpnd_cmplx.<locals>.<lambda>   s    jdl&C&C r,   N)	rd   Filer   filtervaluesrM   r   r[   r2   )frn   s     r*   test_dtype_cmpnd_cmplxrt      s    	%&ABB	M	M	M JQRCCQXXZZPP 	J 	JC+CFOO,=,=syIIII	JJ J J J J J J J J J J J J J J J J Js   ABB	B	)#__doc__rE   numpyr3   pytestrd   h5py.h5r   r   commonr   
data_filesr   r>   markskipifversionhdf5_version_tuplehas_native_complex
pytestmarkhasattrREQUIRE_NUMPY_COMPLEX256rD   rF   rG   NATIVE_BYTE_ORDERparametrizeparamr+   H5_VS_NUMPY_DTYPESr5   rM   rb   rh   rt    r,   r*   <module>r      s    


                         * * * * * *jll K')3%    K""C   	
 ";--L!!!6 .   
 %(MU$:$:CLL  )1cl;;)1clwGGG)1clwGGG)1clwGGG)2s|HHH)2s|HHH+Q0AnUUU,b2CXXX$b*;*	
 	
 	
 $' '% $' FL%u777FL%u777FL%v&999FL%v&999FL'5999FL(&V<<<FL &V&    )+=>>: : ?>:
? ? ?4 ===>>	4 	4 ?>	4 )+=>>4 4 ?>4J J J J Jr,   