
    j'                         d Z ddlZddlmZmZ ddlZddlmZmZm	Z	 ddlm
Z
 ddlm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{
    Attribute data transfer testing module

    Covers all data read/write and type-conversion operations for attributes.
    N   )TestCase	make_name)h5ah5sh5t)File)is_empty_dataspacec                       e Zd Zd Zd ZdS )	BaseAttrsc                 T    t          |                                 d          | _        d S )Nw)r	   mktempfselfs    ]/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/h5py/tests/test_attrs_data.pysetUpzBaseAttrs.setUp   s    dkkmmS))    c                 J    | j         r| j                                          d S d S N)r   closer   s    r   tearDownzBaseAttrs.tearDown   s)    6 	FLLNNNNN	 	r   N)__name__
__module____qualname__r   r    r   r   r   r      s2        * * *    r   r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )
TestScalarzB
        Feature: Scalar types map correctly to array scalars
    c                     t                      }t          j        dt          j                  | j        j        |<   | j        j        |         }|                     |t          j                   dS )z) Integers are read as correct NumPy type r   dtypeN)r   nparrayint8r   attrsassertIsInstance)r   nameouts      r   test_intzTestScalar.test_int*   sV    {{Xarw777Tfl4 c27+++++r   c                 l   t                      }t          j        ddg          }t          j        d|          }|| j        j        |<   | j        j        |         }|                     |t          j                   |                     ||           |                     |d         |d                    dS )z) Compound scalars are read as numpy.void )ai)br   )r   g@r!   r.   N)	r   r#   r"   r$   r   r&   r'   voidassertEqualr   r(   dtdatar)   s        r   test_compoundzTestScalar.test_compound1   s    {{Xz:.//x+++!Tfl4 c27+++d###S49-----r   c                 X   t                      }t          j        dt          j        t          j                  fdt          j        t          j                  fg          }t          j        t          j        t          t          dd                    t          j                  t          j        t          t          dd                    t          j                  f|          d         }|| j	        j
        |<   | j	        j
        |         }|                     ||d	
           dS )z; Compound scalars with vlen fields can be written and read r,   r.   r      r!      
   r   Fcheck_alignmentN)r   r#   r"   h5py
vlen_dtypeint32r$   listranger   r&   assertArrayEqualr1   s        r   test_compound_with_vlen_fieldsz)TestScalar.test_compound_with_vlen_fields<   s    {{XT_RX667T_RX6679 : : x$uQ{{"3"328DDDeArll!3!328DDDFMOQ Q QQSU "Tfl4  	c4?????r   c                 |   t          j        dt          j        t           j                  fdt          j        t           j                  fg          }t          j        dt          j        |          fdt           j        fg          }t          j        t          dd          t           j                  t          j        t          dd	          t           j                  f}t          j        t          d
d          t           j                  t          j        t          dd          t           j                  f}t          j        t          j        ||g|          df|          d         }t                      }|| j	        j
        |<   | j	        j
        |         }|                     ||d           dS )zK Compound scalars with nested compound vlen fields can be written and read r,   r.   f1f2r      r!      	   r8               r   Fr9   N)r#   r"   r;   r<   r=   int64r$   r?   r   r   r&   r@   )r   dt_innerr2   inner1inner2r3   r(   r)   s           r   &test_nesting_compound_with_vlen_fieldsz1TestScalar.test_nesting_compound_with_vlen_fieldsL   s   8c4?28#<#<=!4?28#<#<=? @ @ Xdoh778bh') * * (5A;;bh777(5A;;bh7779 (5R==999(5R==999; x66"2(CCC " " ""$& {{!Tfl4 c4?????r   c                    t          j        dt          j                    fdt          j                    fg          }t          j        dt          j        |          fg          }t                      }t          j        t          j        ddg|          f|          d         }|| j        j        |<   | j        j        |         }| 	                    ||d	           d
S )zV Compound scalars with vlen compounds containing vlen strings can be written and read r,   r.   r   )s   appless   bananas)s   peachess   orangesr!   r   Fr9   N)
r#   r"   r;   string_dtyper<   r   r$   r   r&   r@   )r   rM   r2   r(   r3   r)   s         r   #test_vlen_compound_with_vlen_stringz.TestScalar.test_vlen_compound_with_vlen_stringc   s    8c4#4#6#67!4#4#6#679 : : XT_X667899{{x#:<T"U]efffhoqrrrsuv!Tfl4 c4?????r   N)	r   r   r   __doc__r*   r4   rA   rP   rS   r   r   r   r   r   $   st         , , ,	. 	. 	.@ @ @ @ @ @.@ @ @ @ @r   r   c                       e Zd ZdZd Zd ZdS )	TestArrayzK
        Feature: Non-scalar types are correctly retrieved as ndarrays
    c                    t                      }t          j        dd          }|| j        j        |<   | j        j        |         }|                     |t          j                   |                     |j        d           dS )z/ Single-element arrays are correctly recovered r   r   r!   N)r   r#   ndarrayr   r&   r'   r0   shaper   r(   r3   r)   s       r   test_singlezTestArray.test_singlew   sq    {{z$c***!Tfl4 c2:...D)))))r   c                 N   t                      }t          j        dd          }d|dd<   d|dd<   || j        j        |<   | j        j        |         }|                     |t          j                   |                     |j        d           |                     ||           dS )	z' Rank-1 arrays are correctly recovered )*   r   r!   g      E@Ng     Gr8   #   )	r   r#   rY   r   r&   r'   r0   rZ   r@   r[   s       r   
test_multizTestArray.test_multi   s    {{z%s+++QQQRU!Tfl4 c2:...E***c4(((((r   N)r   r   r   rT   r\   r`   r   r   r   rV   rV   q   s<         * * *
) 
) 
) 
) 
)r   rV   c                   B    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )	TestTypeszF
        Feature: All supported types can be stored in attributes
    c                    t                      }t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        f}|D ]o}t          j
        d|          }d|d<   || j        j        |<   | j        j        |         }|                     |j        |           |                     ||           pdS )z Storage of integer types rX   r!   r^   .N)r   r#   r%   int16r=   rL   uint8uint16uint32uint64rY   r   r&   r0   r"   r@   r   r(   dtypesr2   r3   r)   s         r   r*   zTestTypes.test_int   s    {{'28RXrx(BIry")= 	- 	-B:d"---DDI!%DFL&,t$CSY+++!!#t,,,,	- 	-r   c                 8   t                      }t          d dD                       }|D ]o}t          j        d|          }d|d<   || j        j        |<   | j        j        |         }|                     |j        |           |                     ||           pdS )z! Storage of floating point types c              3   >   K   | ]}t          j        |          V  d S r   r#   r"   .0xs     r   	<genexpr>z'TestTypes.test_float.<locals>.<genexpr>   s*      IIqrx{{IIIIIIr   )z<f4z>f4z>f8z<f8rX   r!   gfffff&E@.N	r   tupler#   rY   r   r&   r0   r"   r@   ri   s         r   
test_floatzTestTypes.test_float   s    {{II,HIIIII 	- 	-B:d"---DDI!%DFL&,t$CSY+++!!#t,,,,	- 	-r   c                 8   t                      }t          d dD                       }|D ]o}t          j        d|          }d|d<   || j        j        |<   | j        j        |         }|                     |j        |           |                     ||           pdS )z Storage of complex types c              3   >   K   | ]}t          j        |          V  d S r   rm   rn   s     r   rq   z)TestTypes.test_complex.<locals>.<genexpr>   s*      KKqrx{{KKKKKKr   )z<c8z>c8z<c16z>c16rX   r!   y33333A@.Nrr   ri   s         r   test_complexzTestTypes.test_complex   s    {{KK,JKKKKK 	- 	-B:d"---D$DI!%DFL&,t$CSY+++!!#t,,,,	- 	-r   c                 P   t                      }t          d dD                       }|D ]{}t          j        d|          }d|d<   || j        j        |<   | j        j        |         }|                     |j        |           |                     |d         |d                    |dS )	z! Storage of fixed-length strings c              3   >   K   | ]}t          j        |          V  d S r   rm   rn   s     r   rq   z(TestTypes.test_string.<locals>.<genexpr>   s*      <<qrx{{<<<<<<r   )z|S1z|S10rX   r!   h.r   N)r   rs   r#   rY   r   r&   r0   r"   ri   s         r   test_stringzTestTypes.test_string   s    {{<<O<<<<< 	. 	.B:d"---DDI!%DFL&,t$CSY+++SVT!W----	. 	.r   c                 v   t                      }t          j        dt          j                  }d|d<   || j        j        |<   | j        j        |         }|                     |j        |j                   |                     |d         |d                    |                     |d         |d                    dS )z Storage of NumPy booleans rK   r!   )TF.r   r   N)r   r#   rY   bool_r   r&   r0   r"   r[   s       r   	test_boolzTestTypes.test_bool   s    {{z$bh///S	!Tfl4 DJ///Qa)))Qa)))))r   c                    t                      }t          j        d          }t          j        d|          }d|d<   || j        j        |<   | j        j        |         }|                     |j        |           |                     |d         |d                    |                     |d         |d                    d	S )
z# Storage of vlen byte string arraysascii)encodingr}   r!   )HellozHi there!  This is HDF5!.r   r   N)	r   r;   rR   r#   rY   r   r&   r0   r"   r1   s        r   test_vlen_string_arrayz TestTypes.test_vlen_string_array   s    {{000z$b)))7S	!Tfl4 B'''Qa)))Qa)))))r   c                    t                      }d| j        j        |<   | j        j        |         }|                     |d           |                     t	          |          t
                     t          j                            | j        j	        |
                    d                    }|                                }|                     t	          |          t          j        j                   |                     |                                t          j        j                   |                     |                                           dS )z@ Storage of variable-length byte string scalars (auto-creation) s   Hellor   utf-8N)r   r   r&   r0   typestrr;   r   openidencodeget_typer   TypeStringIDget_cset
CSET_ASCII
assertTrueis_variable_strr   r(   r)   aidtids        r   test_string_scalarzTestTypes.test_string_scalar   s    {{%Tfl4 g&&&cC(((hmmDFIt{{7';';<<llnncDH$9:::)<===++--.....r   c                    t                      }dt          d          z   dz   | j        j        |<   | j        j        |         }|                     |dt          d          z   dz              |                     t          |          t                     t          j        	                    | j        j
        |                    d                    }|                                }|                     t          |          t          j        j                   |                     |                                t          j        j                   |                     |                                           dS )z< Storage of variable-length unicode strings (auto-creation) r   i@#  z!!r   N)r   chrr   r&   r0   r   r   r;   r   r   r   r   r   r   r   r   	CSET_UTF8r   r   r   s        r   test_unicode_scalarzTestTypes.test_unicode_scalar   s   {{%F3e;Tfl4 hV4u<===cC(((hmmDFIt{{7';';<<llnncDH$9:::);<<<++--.....r   N)r   r   r   rT   r*   rt   rw   r{   r   r   r   r   r   r   r   rb   rb      s         - - -- - -- - -. . .	* 	* 	** * */ / // / / / /r   rb   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
	TestEmptyc                 t   t                               |            t          j        t          j                  }t
          j                                        }|                    d           t          j        | j
        j        d||          }t          j        t          j        d                    | _        d S )Nr8      xS10)r   r   r   createNULLr   C_S1copyset_sizer   r   r   r;   Emptyr#   r"   	empty_obj)r   sidr   r   s       r   r   zTestEmpty.setUp   s|    j""hmmooRjD#s33BHUOO44r   c                 \    |                      | j        | j        j        d                    d S Nrp   )r0   r   r   r&   r   s    r   	test_readzTestEmpty.test_read  s4    NDFL-	
 	
 	
 	
 	
r   c           
          t                      }| j        | j        j        |<   |                     t          t          j        | j        j        |	                    d                                         d S )Nr   )
r   r   r   r&   r   r
   r   r   r   r   )r   r(   s     r   
test_writezTestEmpty.test_write  sb    {{!^Tsx	4;;w3G3GHHII	
 	
 	
 	
 	
r   c                     |                      t                    5  | j        j                            dd           d d d            d S # 1 swxY w Y   d S )Nrp   r   )assertRaisesOSErrorr   r&   modifyr   s    r   test_modifyzTestEmpty.test_modify  s    w'' 	( 	(FLQ'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   !A		AAc                     t          | j        j                                                  }|                     | j        g|           d S r   r>   r   r&   valuesr0   r   r   r   s     r   test_valueszTestEmpty.test_values  sK    dfl))++,,^f	
 	
 	
 	
 	
r   c                     t          | j        j                                                  }|                     d| j        fg|           d S r   r>   r   r&   itemsr0   r   r   r   s     r   
test_itemszTestEmpty.test_items  P    TV\''))**DN#$e	
 	
 	
 	
 	
r   c                     t          | j        j                                                  }|                     | j        g|           d S r   r   r   s     r   test_itervalueszTestEmpty.test_itervalues%  sK    dfl))++,,^f	
 	
 	
 	
 	
r   c                     t          | j        j                                                  }|                     d| j        fg|           d S r   r   r   s     r   test_iteritemszTestEmpty.test_iteritems+  r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s        5 5 5
 
 


 
 
( ( (
 
 

 
 

 
 

 
 
 
 
r   r   c                       e Zd ZdZd ZdS )TestWriteExceptionzH
        Ensure failed attribute writes don't leave garbage behind.
    c                    d}|                      t                    5  || j        j        d<   ddd           n# 1 swxY w Y   |                      t                    5  | j        j        d          ddd           dS # 1 swxY w Y   dS )z0 ValueError on string write wipes out attribute s   Hello Hellorp   N)r   
ValueErrorr   r&   KeyError)r   ss     r   r   zTestWriteException.test_write8  s    z** 	" 	" !DFL	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"x(( 	 	FL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   9= =A>>BBN)r   r   r   rT   r   r   r   r   r   r   2  s-             r   r   )rT   numpyr#   commonr   r   r;   r   r   r   r	   h5py._hl.baser
   r   r   rV   rb   r   r   r   r   r   <module>r      s        ' ' ' ' ' ' ' '                  , , , , , ,       J@ J@ J@ J@ J@ J@ J@ J@Z) ) ) ) )	 ) ) )8n/ n/ n/ n/ n/	 n/ n/ n/b1
 1
 1
 1
 1
	 1
 1
 1
h         r   