
    1Vh                     p    d dl Zd dlZd dlmZ ddlmZmZ  G d dej
                        Z G d de      Zy)	    N)h5t   )TestCaseutc                       e Zd ZdZd Zd Zy)TestCompoundzG
        Feature: Compound types can be created from Python dtypes
    c                     t        j                  dt        j                  fdg      }t	        j
                  |d      }|j                  d      |j                  d      }}| j                  |t        j                         | j                  |t        j                         | j                  |j                  d      d       | j                  |j                  d      t        j                  j                                y)zL Reference types are correctly stored in compound types (issue 144)
        a)b<f4T)logicalr   r   N)npdtypeh5py	ref_dtyper   	py_createget_member_typeassertEqualSTD_REF_OBJ
IEEE_F32LEget_member_offsetget_size)selfdttidt1t2s        C/home/dcms/DCMS/lib/python3.12/site-packages/h5py/tests/test_h5t.pytest_refzTestCompound.test_ref   s     XXT^^,l;<mmB-$$Q')<)<Q)?BS__-S^^,..q115..q13??3K3K3MN    c                    d}g dg dg dd}t        j                  |      }t        j                  t        j                  |      }t        |d   |d   |d         D ]M  \  }}}|j                  t        |t              r|j                  d	      n||t        j                  |             O | j                  |j                  |       | j                  |j                  j                  |       y )
N   )f1f2f3)r   z<i4<f8)r         )namesformatsoffsetsr)   r+   r*   utf8)r   r   r   createCOMPOUNDzipinsert
isinstancestrencoder   r   itemsize)r   size	type_dictexpected_dtyper   nameoffsetr   s           r   test_out_of_order_offsetsz&TestCompound.test_out_of_order_offsets#   s    ',!
	 ),jjt, #'"Ii$8)I:N!
 	D&" JJ'1$'<F#$b!	 	N3++T2r    N)__name__
__module____qualname____doc__r   r:    r    r   r   r      s    	O3r    r   c                       e Zd ZdZd Zy)TestTypeFloatIDzTest TypeFloatID.c                    | j                         j                         }d}d}d}d}d}d}t        j                  g dg dg d	g d
gt        j                        }t        j                  g dg dg dg dgt        j                        }	t
        j                  j                  |      }
t
        j                  j                  |      }t        j                  j                         }|j                  ddddd       |j                  d       |j                  d       |j!                          t
        j"                  j                  |
|||      }|j%                  t
        j                  j&                  t
        j                  j&                  |       ~t        j                  j                         }|j                  ddddd       |j                  d       |j                  d       |j!                          t
        j"                  j                  |
|||      }|j%                  t
        j                  j&                  t
        j                  j&                  |	       ~t        j                  j                         }|j                  ddddd       |j                  d       |j                  d       |j!                          t
        j"                  j                  |
|||      }|j%                  t
        j                  j&                  t
        j                  j&                  |	       ~t        j                  j                         }|j                  ddddd       |j                  d       |j                  d       |j!                          t
        j"                  j                  |
|||      }|j%                  t
        j                  j&                  t
        j                  j&                  |	       ~t
        j"                  j                  |
|t        j(                  |      }|j%                  t
        j                  j&                  t
        j                  j&                  |	       ~~~
t        j*                  |d      }||   dd }t        j,                  j/                  ||       | j1                  |j2                  t        j2                  d             ||   dd }t        j,                  j/                  ||	       | j1                  |j2                  t        j2                  d             ||   }	 | j1                  |j2                  t        j2                  d             ||   }| j1                  |j2                  t        j2                  d             ||   }| j1                  |j2                  t        j6                         y# t4        $ r2 | j1                  |j2                  t        j2                  d             Y w xY w)z@Custom floats are correctly promoted to standard floats on read.s   DS1s   DS2s   DS3s   DS4s   DS5)      )a  g>g];>=gq=gg=g  `ӽgZF  >)rE   gϽ >g;c  =笃>g4-  >gt  =g4  =)rE   g]  >g;'>g  (>g% (=gi  h=g  ݽ)rE   gSdݽgjg@  H>g?>g6  0>g<  >)r   )rE   g[_>gؽg  8=gT p  =g =g4'ӽ)rE   g&1  =g3  
>g/=gI/>gX>g׽)rE   gb9  P>g43?	>g   >gcE/=g[>g(e   =)rE   g[~=rF   g(e   =g׺ 0=g   >g~,=   	      r      5         
   i  rNr   z<f2r&   )mktempr3   r   arrayfloat32r   h5fr-   h5screate_simpler   
IEEE_F16LEcopy
set_fieldsset_size	set_ebiaslockh5dwriteALLNATIVE_LDOUBLEFiletestingassert_array_equalr   r   AttributeError
longdouble)r   test_filenamedatasetdataset2dataset3dataset4dataset5dimswdatawdata2fidspacemytypedsetmytype2mytype3mytype4fvaluess                      r   test_custom_float_promotionz+TestTypeFloatID.test_custom_float_promotion>   sc    ,,. ++,+, 46::?  --,,- 57JJ@ hhoom,&&t, $$&"aAq)xxsGVU;

488<<u5 ..%%'2q!Q*"xxsHgu=

488<<v6 ..%%'2r1a,"xxsHgu=

488<<v6 ..%%'2r1a,#xxsHgu=

488<<v6 xxsHc.@.@%H

488<<v6 IImS) 7A


%%fe4rxx7 8Q


%%ff5rxx7 {	:TZZ%9
 {RXXe_5 {R]]3  	:TZZ%9	:s   7/W
 
8XXN)r;   r<   r=   r>   rw   r?   r    r   rA   rA   ;   s    ~4r    rA   )	numpyr   r   r   commonr   r   r   rA   r?   r    r   <module>rz      s2        &32;; &3RA4h A4r    