
    j%                     |   d Z ddlZddlmZ ddlmZmZ ddlZddlm	Z	 ddlm
Z
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 G d de          Z G d de          Z G d de          Z G d de          Zd ZdS )z
    Attributes testing module

    Covers all operations which access the .attrs property, with the
    exception of data read/write and type conversion.  Those operations
    are tested by module test_attrs_data.
    N)MutableMapping   )TestCase	make_name)File)h5ah5t)AttributeManagerc                       e Zd Zd Zd ZdS )	BaseAttrsc                 T    t          |                                 d          | _        d S )Nw)r   mktempfselfs    X/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/h5py/tests/test_attrs.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                       e Zd ZdZd ZdS )TestReprzI Feature: AttributeManager provide a helpful
        __repr__ string
    c                 n   | j                             t                                }|j                            dd           |                     t          |j                  t                     |j        	                                 |                     t          |j                  t                     d S )Nattr   )
r   create_groupr   attrscreateassertIsInstancereprstridr   )r   grps     r   	test_reprzTestRepr.test_repr-   s    f!!)++..	"""d39oos333d39oos33333r   N)r   r   r   __doc__r*   r   r   r   r   r   '   s-         4 4 4 4 4r   r   c                   H    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )
TestAccesszG
        Feature: Attribute creation/retrieval via special methods
    c                     t                      }d| j        j        |<   || j        j        v sJ |                     | j        j        |         d           dS )z) Attribute creation by direct assignment       @Nr   r   r#   assertEqualr   names     r   test_createzTestAccess.test_create;   sS    {{ Ttv|####d+S11111r   c                     t                      }| j        j                            |d           || j        j        v sJ |                     | j        j        |         d           dS )z' Attribute creation by create() method r/   N)r   r   r#   r$   r1   r2   s     r   test_create_2zTestAccess.test_create_2B   s_    {{D#&&&tv|####d+S11111r   c                    t                      }d| j        j        |<   || j        j        v sJ |                     | j        j        |         d           d| j        j        |<   |                     | j        j        |         d           dS )z- Attributes are modified by direct assignment      Nr0   r2   s     r   test_modifyzTestAccess.test_modifyI   s    {{Ttv|####d+Q///Td+Q/////r   c                    t          d          }t          d          }| j        j                            |d           || j        j        v sJ |                     | j        j        |         d           | j        j                            |d           || j        j        v sJ |                     | j        j        |         d           | j        j                            |d           || j        j        v sJ || j        j        v sJ |                     | j        j        |         d           |                     | j        j        |         d           t          j        d          }|                     t                    5  | j        j                            ||           ddd           dS # 1 swxY w Y   dS )z, Attributes are modified by modify() method abr8   r9      N)	r   r   r#   modifyr1   nparangeassertRaises	TypeError)r   r<   r=   	new_values       r   test_modify_2zTestAccess.test_modify_2R   s   cNNcNNAq!!!DFL    a!,,,Aq!!!DFL    a!,,, 	Aq!!!DFL    DFL    a!,,,a!,,, IaLL	y)) 	. 	.FL9---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   !F33F7:F7c                     t                      }d| j        j        |<   d| j        j        |<   |                     | j        j        |         d           dS )z% Attributes are silently overwritten r/         @Nr0   r2   s     r   test_overwritezTestAccess.test_overwritek   sL    {{ T Td+S11111r   c                    t                      }d| j        j        |<   |                     | j        j        |         j        d           |                     | j        j        |         t          j        d                     dS )z Attribute rank is preserved )r/   rG   )   N)r   r   r#   r1   shapeassertArrayEqualr@   arrayr2   s     r   	test_rankzTestAccess.test_rankr   sj    {{'Td+14888dfl40"(92E2EFFFFFr   c                     t                      }t          j        d          | j        j        |<   | j        j        |         }|                     |j        d           |                     |d         d           dS )z/ Attributes of shape (1,) don't become scalars r   r   r   N)r   r@   onesr   r#   r1   rK   r   r3   outs      r   test_singlezTestAccess.test_singley   sg    {{WT]]Tfl4 D)))R!$$$$$r   c                     |                      t                    5  | j        j        d          ddd           dS # 1 swxY w Y   dS )z0 Attempt to access missing item raises KeyError notexistNrB   KeyErrorr   r#   r   s    r   test_access_exczTestAccess.test_access_exc   s    x(( 	% 	%FL$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   ;??c                 Z   t                      }d| j        j        |<   | j        j                            |          }t	          |t
          j                  sJ |                     t                    5  | j        j                            d           d d d            d S # 1 swxY w Y   d S )Nr/   rV   )	r   r   r#   get_id
isinstancer   AttrIDrB   rX   )r   r3   aids      r   test_get_idzTestAccess.test_get_id   s    {{ Tfl!!$''#sz*****x(( 	, 	,FL
+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   3 B  B$'B$N)r   r   r   r+   r4   r6   r:   rE   rH   rN   rT   rY   r_   r   r   r   r-   r-   5   s         2 2 22 2 20 0 0. . .22 2 2G G G% % %% % %
, , , , ,r   r-   c                       e Zd ZdZd Zd ZdS )
TestDeletez?
        Feature: Deletion of attributes using __delitem__
    c                     t                      }d| j        j        |<   |                     || j        j                   | j        j        |= |                     || j        j                   dS )z Deletion via "del" r/   N)r   r   r#   assertInassertNotInr2   s     r   test_deletezTestDelete.test_delete   s]    {{ TdDFL)))FLtv|,,,,,r   c                     |                      t                    5  | j        j        d= ddd           dS # 1 swxY w Y   dS )z0 Attempt to delete missing item raises KeyError rV   NrW   r   s    r   test_delete_exczTestDelete.test_delete_exc   s    x(( 	) 	)Z(	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   6::N)r   r   r   r+   re   rg   r   r   r   ra   ra      s<         - - -) ) ) ) )r   ra   c                   $    e Zd ZdZd Zd Zd ZdS )TestUnicodezM
        Feature: Attributes can be accessed via Unicode or byte strings
    c                     t          d                              d          }d| j        j        |<   | j        j        |         }|                     |d           dS )z# Access via pure-ASCII byte string ascii*   Nr   encoder   r#   r1   rR   s      r   
test_asciizTestUnicode.test_ascii   sU    !!((11Tfl4 b!!!!!r   c                     t          d                              d          }d| j        j        |<   | j        j        |         }|                     |d           dS )z" Access via non-ASCII byte string u   non-asciiþutf-8rl   Nrm   rR   s      r   test_rawzTestUnicode.test_raw   sU    ))0099Tfl4 b!!!!!r   c                     t          dt          d          z             }d| j        j        |<   | j        j        |         }|                     |d           dS )z5 Access via Unicode string with non-ascii characters Omegai  rl   N)r   chrr   r#   r1   rR   s      r   test_unicodezTestUnicode.test_unicode   sR    3v;;.//Tfl4 b!!!!!r   N)r   r   r   r+   ro   rr   rv   r   r   r   ri   ri      sK         " " "" " "" " " " "r   ri   c                       e Zd ZdZd Zd ZdS )
TestCreatez5
        Options for explicit attribute creation
    c                 J   t          d          }t          d          }t          j        d          | j        |<   | j        j                            |d| j        |                    |                     | j        j        |         d           t          j        | j        j	        |
                    d                    }|                                }| j        |         j	        }|                     ||           |                     |                                           dS )zL Attributes created from named types link to the source type object
        txu8rl   dtyperq   N)r   r@   r~   r   r#   r$   r1   r   openr(   rn   get_type
assertTrue	committed)r   rz   r{   r^   htypehtype2s         r   
test_namedzTestCreate.test_named   s     cNNcNNHTNNq	Ar333a"---htvy!((7"3"344'''))*****r   c                    t                      }| j        j                            |t	          j        d                     |                     | j        j        |         t	          j        d                     | j        j                            |t	          j        d                     |                     | j        j        |         t	          j        d                     dS )z0 Create attribute with h5py.Empty value
        r   N)r   r   r#   r$   h5pyEmptyr1   r2   s     r   
test_emptyzTestCreate.test_empty   s     {{D$*S//222d+TZ__===D$*T"2"2333d+TZ-=-=>>>>>r   N)r   r   r   r+   r   r   r   r   r   rx   rx      s<         + + +	? 	? 	? 	? 	?r   rx   c                       e Zd ZdZd Zd ZdS )TestMutableMappingz^Tests if the registration of AttributeManager as a MutableMapping
    behaves as expected
    c                     t          t          t                    sJ t          | j        j        t                    sJ d S r   )
issubclassr
   r   r\   r   r#   r   s    r   test_resolutionz"TestMutableMapping.test_resolution   s9    *N;;;;;$&,7777777r   c                 ~    t           j         t           j         t           j         t           j         t           j         dS )zC
        Test that the required functions are implemented.
        N)r
   __getitem____setitem____delitem____iter____len__r   s    r   test_validityz TestMutableMapping.test_validity   s7     	$$$$$$!!    r   N)r   r   r   r+   r   r   r   r   r   r   r      s<         8 8 8! ! ! ! !r   r   c                       e Zd Zd Zd ZdS )TestVlenc                 J   t                      }t          j        t          j        d          t          j        d          gt	          j        t                              }|| j        j        |<   | 	                    | j        j        |         d         |d                    d S )Nr8   r9   r}   r   )
r   r@   rM   rA   r	   
vlen_dtypeintr   r#   rL   )r   r3   r<   s      r   	test_vlenzTestVlen.test_vlen   s    {{HbillBIaLL1.%%' ' 'Tdfl403QqT:::::r   c                 t   t                      }t          j        t          j        d                    }t          j        d|          }t          j        ddgd          |d<   | j        j        	                    ||           | 
                    | j        j        |         d         |d                    d S )NS1rP   r}      a   br   )r   r   r   r@   r~   emptyrM   r   r#   r$   rL   )r   r3   dtr<   s       r   test_vlen_s1zTestVlen.test_vlen_s1   s    {{_RXd^^,,HT$$$xtD111!D!$$$dfl403QqT:::::r   N)r   r   r   r   r   r   r   r   r   r      s2        ; ; ;; ; ; ; ;r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestTrackOrderc                     | j                             t                      |          j        }t	          d          D ]}||t          |          <   |S )Ntrack_orderd   )r   r"   r   r#   ranger'   )r   r   r#   is       r   
fill_attrszTestTrackOrder.fill_attrs  sN    ##IKK[#IIOs 	 	AE#a&&MMr   c                     |                      d          }|                     t          |          d t          d          D                        d S )NTr   c                 ,    g | ]}t          |          S r   r'   .0r   s     r   
<listcomp>z3TestTrackOrder.test_track_order.<locals>.<listcomp>  s    555Q#a&&555r   r   )r   r1   listr   r   r#   s     r   test_track_orderzTestTrackOrder.test_track_order  sV    D11e55%**555	7 	7 	7 	7 	7r   c           	          |                      d          }|                     t          |          t          d t	          d          D                                  d S )NFr   c                 ,    g | ]}t          |          S r   r   r   s     r   r   z6TestTrackOrder.test_no_track_order.<locals>.<listcomp>  s     < < <AQ < < <r   r   )r   r1   r   sortedr   r   s     r   test_no_track_orderz"TestTrackOrder.test_no_track_order  s_    E22e < <s < < <==	? 	? 	? 	? 	?r   c                    | j                             t                      d          }t          d          D ]}||j        t          |          <   |                     |j        d         d           d|j        d<   |                     |j        d         d           |                     d|j                   |j        d= |                     d|j                   d S )NTr      11   g      E@10)	r   r"   r   r   r#   r'   r1   rc   rd   )r   groupr   s      r   !test_track_order_overwrite_deletez0TestTrackOrder.test_track_order_overwrite_delete  s    ##IKKT#BBr 	$ 	$A"#EKAT*B/// DT*D111dEK(((Ku{+++++r   N)r   r   r   r   r   r   r   r   r   r   r   r     sP          7 7 7
? ? ?
, , , , ,r   r   c                       e Zd Zd ZdS )TestDatatypec                 
   t                      }t          j        d          | j        |<   | j        |         }|                     t          |j                                                  g            |j                            dd           |                     t          |j                                                  dg           |                     t          |j        	                                          dg           d S )Nr   r<   r/   )
r   r@   r~   r   r1   r   r#   keysr$   values)r   r3   r   s      r   test_datatypezTestDatatype.test_datatype'  s    {{x}}tVD\bhmmoo..333
S!!!bhmmoo..666bhoo//003%88888r   N)r   r   r   r   r   r   r   r   r   %  s#        9 9 9 9 9r   r   c                    | }t                      }t          j        t          j                  j        t          j        t          j                  j        dz   g}|j                            ||t          j                   |j        |         j        t          j        t          j                  k    sJ t          j	        
                    |j        |         t          j        |t          j                             |j                            ||           t          j	        
                    |j        |         t          j        |t          j                             d S )Nr   r}   )r   r@   iinfoint64maxr#   r$   uint64r~   testingassert_array_equalrM   r?   )writable_filer   r3   datas       r   test_python_int_uint64r   0  s    A;;DHRX"BHRX$6$6$:Q$>?D GNN4RYN///74="(29"5"55555J!!!'$-$bi1P1P1PQQQ GNN4J!!!'$-$bi1P1P1PQQQQQr   )r+   numpyr@   collections.abcr   commonr   r   r   r   r   r	   r
   r   r   r-   ra   ri   rx   r   r   r   r   r   r   r   r   <module>r      sX        * * * * * * ' ' ' ' ' ' ' '                ! ! ! ! ! !       4 4 4 4 4x 4 4 4X, X, X, X, X, X, X, X,v) ) ) ) ) ) ) )(" " " " ") " " "8? ? ? ? ? ? ? ?>! ! ! ! ! ! ! !$; ; ; ; ;y ; ; ;$, , , , ,Y , , ,D	9 	9 	9 	9 	99 	9 	9 	9R R R R Rr   