
    IR-e.$                     ,   d Z ddlZddlZej                            d           G d d                      Zej                            d           G d de                      Zej                            d           G d d	e                      ZdS )
za Verify item access API in:
https://github.com/astropy/astropy/wiki/Table-item-access-definition
    N
table_datac                       e Zd ZdS )BaseTestItemsN)__name__
__module____qualname__     Dlib/python3.11/site-packages/astropy/table/tests/test_item_access.pyr   r      s        Dr
   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestTableColumnsItemsc                 |   |                     |j                  | _        | j        j        | _        | j        d         j        dk    sJ | j        d         d         dk    sJ | j        d         j        dk    sJ | j        d         j        dk    sJ | j        d         j        ddik    sJ | j        d         j	        dk    sJ | j        d         
                    |j        d                   sJ t          | j        d         |j                  sJ d| j        d	         d<   | j        d	         d         dk    sJ d
S )zsAccess TableColumns by name and show that item access returns
        a Column that refers to underlying table dataa      daz%imauar   bN)TableCOLStcolumnstcnamedescriptionformatmetaunitattrs_equal
isinstanceColumnselfr   s     r   test_by_namez"TestTableColumnsItems.test_by_name   s=    !!*/22&.ws| C''''ws|A!####ws|'4////ws|"d****ws| T1I----ws| D((((ws|''
(:;;;;;$'#,
(9:::::Qvc{1~""""""r
   c                    |                     |j                  | _        | j        j        | _        | j        d         j        dk    sJ t          j        | j        d         j        |j        d         j        k              sJ | j        d         j	        dk    sJ | j        d         j
        dk    sJ | j        d         j        ddik    sJ | j        d         j        dk    sJ | j        d                             |j        d                   sJ t          | j        d         |j                  sJ | j        d         j        dk    sJ d| j        d         d<   | j        d         d         dk    sJ d	S )
zwAccess TableColumns by position and show that item access returns
        a Column that refers to underlying table datar   r   dbz%dmbubr   r   N)r   r   r   r   r   r   npalldatar   r   r   r   r    r!   r"   r#   s     r   test_by_positionz&TestTableColumnsItems.test_by_position%   se    !!*/22&.wqz#%%%%vdgajo);)@@AAAAAwqz%----wqz D((((wqz4)++++wqz$&&&&wqz%%joa&899999$'!*j&788888wqz$&&&&
1vc{1~""""""r
   c                    |                     |j                  | _        | j        j        | _        | j        d         }|d         j        dk    sJ |d         d         dk    sJ |d         j        dk    sJ |d         d         dk    sJ d|d         d<   | j        d         d         dk    sJ | j        d         d         dk    sJ dS )	z}Access TableColumns with "fancy indexing" and showed that returned
        TableColumns object still references original data)r   cr   r/      r   r      Nr   r   r   r   r   r   r$   r   tc2s      r   test_mult_columnsz'TestTableColumnsItems.test_mult_columns9   s     !!*/22&.gh1v{c!!!!1vayA~~~~1v{c!!!!1vayA~~~~Cws|A!####vc{1~""""""r
   c                    |                     |j                  | _        | j        j        | _        | j        dd         }|d         j        dk    sJ |d         d         dk    sJ |d         j        dk    sJ |d         d         dk    sJ d|d         d<   | j        d         d         dk    sJ | j        d         d         dk    sJ dS )	zrAccess TableColumns with slice and showed that returned
        TableColumns object still references original datar      r/   r0   r   r   r1   Nr2   r3   s      r   test_column_slicez'TestTableColumnsItems.test_column_sliceI   s     !!*/22&.gacl1v{c!!!!1vayA~~~~1v{c!!!!1vayA~~~~Cws|A!####vc{1~""""""r
   N)r   r   r   r%   r-   r5   r8   r	   r
   r   r   r      sP        # # #$# # #(# # # # # # # #r
   r   c                   P   e Zd Zej                            dd ej        d           ej        d          g          d             Z	ej                            dd ej        d           ej        d          g          d             Z
d Zd Zd Zd Zd	 Zd
 Zd Zd Zd ZdS )TestTableItemsidxr   c                     |                     |j                  | _        | j        j        | _        | j        d         }||         dk    sJ d||<   | j        d         |         dk    sJ dS )z'Column access returns REFERENCE to datar   r   r   N)r   r   r   r   r   )r$   r   r;   r   s       r   test_columnzTestTableItems.test_column\   sm     !!*/22&.F3Kv{{{{#vc{31$$$$$$r
   c                    |                     |j                  | _        | j        j        | _        | j        |         }|d         dk    sJ ||         dk    sJ |j        d                             |j        d                   sJ |j        d                             |j        d                   sJ |j        d                             |j        d                   sJ d||<   ||         dk    sJ |d         dk    sJ | j        d         |         dk    sJ | j        |         d         dk    sJ d|d<   |d         dk    sJ |d         dk    sJ | j        d         d         dk    sJ | j        d         d         dk    sJ dS )	z%Row  access returns REFERENCE to datar   r   r1   r   r   r   r/   N)r   r   r   r   r   r    )r$   r   r;   rows       r   test_rowzTestTableItems.test_rowg   s    !!*/22&.fSk3x1}}}}3x1}}}}{3++JOA,>?????{3++JOA,>?????{3++JOA,>????? C3x1}}}}3x1}}}}vc{31$$$$vc{31$$$$ C1v{{{{3x1}}}}vc{1~""""vay~""""""r
   c                    |                     |j                  | _        g dt          j        g           fD ]}| j        |         }|rJ t          |          dk    sJ |d                             |j        d                   sJ |d                             |j        d                   sJ |d                             |j        d                   sJ dS )	zm
        Table item access with [], (), or np.array([]) returns the same table
        with no rows.
        r	   r   r   r   r   r/   r   N)r   r   r   r*   arraylenr    )r$   r   itemt2s       r   test_empty_iterable_itemz'TestTableItems.test_empty_iterable_item   s    
 !!*/22BHRLL( 	; 	;DBMMMr77a<<<<c7&&zq'9:::::c7&&zq'9:::::c7&&zq'9::::::	; 	;r
   c                    |                     |j                  | _        | j        j        | _        | j        dd         }t          j        |d         |j        d         dd         k              sJ |d                             |j        d                   sJ |d                             |j        d                   sJ |d                             |j        d                   sJ d|d         d<   t          j        | j        d         t          j	        g d          k              sJ |j
        | j        j
        k    sJ |j        | j        j        k    sJ t          ||j                   sJ d	S )
z%Table slice returns REFERENCE to datar   r7   r   r   r   r/   r   )r   r   r7   N)r   r   r   r   r   r*   r+   DATAr    rB   masked_column_classr!   )r$   r   rE   s      r   test_table_slicezTestTableItems.test_table_slice   s\   !!*/22&.VAaC[vbg!5ac!::;;;;;#w"":?1#566666#w"":?1#566666#w"":?1#5666663
vdfSkRXiii%8%8899999yDFM))))46#77777"j.///////r
   c                 l   |                     |j                  | _        | j        j        | _        t          j        ddg          }| j        |         }t          j        |d         |j        d         |         k              sJ |d         	                    |j        d                   sJ |d         	                    |j        d                   sJ |d         	                    |j        d                   sJ d|d         d<   t          j        | j        
                                |j        k              sJ t          j        |d         |j        d         |         k              sJ |j        | j        j        k    sJ |j        | j        j        k    sJ t          ||j                   sJ dS )z&Table fancy slice returns COPY of datar   r   r   r   r   r/   N)r   r   r   r   r   r*   rB   r+   rH   r    as_arrayanyrI   rJ   r!   r$   r   slicerE   s       r   test_fancy_index_slicez%TestTableItems.test_fancy_index_slice   s   !!*/22&.!Q  VE]vbg!5e!<<=====#w"":?1#566666#w"":?1#566666#w"":?1#5666663
vdfoo'':?:;;;;;vbg!5e!<<=====yDFM))))46#77777"j.///////r
   c                 H   |                     |j                  | _        | j        j        | _        ddg}| j        |         }t          j        |d         |j        d         |         k              sJ |d                             |j        d                   sJ |d                             |j        d                   sJ |d                             |j        d                   sJ d|d         d<   t          j        | j        	                                |j        k              sJ t          j
        |d         |j        d         |         k              sJ |j        | j        j        k    sJ |j        | j        j        k    sJ t          ||j                   sJ dS )z+Table list index slice returns COPY of datar   r   r   r   r   r/   N)r   r   r   r   r   r*   r+   rH   r    rM   rN   rI   rJ   r!   rO   s       r   test_list_index_slicez$TestTableItems.test_list_index_slice   s   !!*/22&.AVE]vbg!5e!<<=====#w"":?1#566666#w"":?1#566666#w"":?1#5666663
vdfoo'':?:;;;;;vbg!5e!<<=====yDFM))))46#77777"j.///////r
   c                    |                     |j                  | _        | j        j        | _        dddgfD ]P}| j        |         }t          j        |d         |j        d         k              sJ t          j        |d         |j        d         k              sJ |d                             |j        d                   sJ |d                             |j        d                   sJ d|d         d<   t          j        | j        	                                |j        k              sJ t          j
        |d         |j        d         k              sJ |j        | j        j        k    sJ |j        | j        j        k    sJ RdS )zESelect columns returns COPY of data and all column
        attributes)r   r/   r   r/   r   r   N)r   r   r   r   r   r*   r+   rH   r    rM   rN   rI   rJ   )r$   r   r   rE   s       r   test_select_columnsz"TestTableItems.test_select_columns   sz    !!*/22&. #S#J/ 
	< 
	<GB6"S'Z_S%99:::::6"S'Z_S%99:::::c7&&zq'9:::::c7&&zq'9:::::BsGAJ6$&//++z>?????6"S'Z_S%99:::::9----#tv';;;;;;
	< 
	<r
   c                    |                     |j                  | _        t          j        t
                    5 }| j        dg          ddd           n# 1 swxY w Y   dt          |j                  v sJ t          j        t
                    5 }| j        ddg          ddd           n# 1 swxY w Y   dt          |j                  v sJ dS )z+Selecting a column that doesn't exist failsxxxxNz'xxxx'yyyy)r   r   r   pytestraisesKeyErrorstrvalue)r$   r   errs      r   test_select_columns_failz'TestTableItems.test_select_columns_fail   s6   !!*/22]8$$ 	FF8	 	 	 	 	 	 	 	 	 	 	 	 	 	 	3sy>>))))]8$$ 	%FFF#$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%3sy>>))))))s#   AAAB,,B03B0c                    |                     |j                  }t          j        |d         dk              }||         }t          j        |d         ddgk              sJ t          j        |d         ddgk              sJ t          ||j                   sJ t          j        |d         dk              }||         }t          |          d	k    sJ t          ||j                   sJ d
S )z$Select rows using output of np.wherer   g      ?r   r7   r   r1      d   r   N)r   r   r*   wherer+   r!   rC   )r$   r   r   rowsrE   s        r   test_np_wherezTestTableItems.test_np_where   s    Z_--x#%%tWvbg!Q'(((((vbg!Q'((((("j.///// x#%%tW2ww!||||"j.///////r
   c                     |                     |j                  }t          j                            t          |          d          }||d                   dS )zp
        Select rows using numpy integers.  This is a regression test for a
        py 3.3 failure mode
        r   )sizer   N)r   r   r*   randomrandintrC   )r$   r   r   idxss       r   test_np_integerszTestTableItems.test_np_integers   sJ    
 Z_--y  Qa 00	$q'



r
   c                     |                     |j                  | _        | j        j        | _        t          j        t                    5  | j        d          ddd           dS # 1 swxY w Y   dS )z&Select column name that does not exist)r   r   N)r   r   r   r   r   rY   rZ   
ValueErrorr#   s     r   test_select_bad_columnz%TestTableItems.test_select_bad_column   s    !!*/22&.]:&& 	 	F6NN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   
A%%A),A)N)r   r   r   rY   markparametrizer*   int64rB   r=   r@   rF   rK   rQ   rS   rU   r_   re   rk   rn   r	   r
   r   r:   r:   Z   s-       [UQXRXa[[$ABB% % CB% [UQXRXa[[$ABB# # CB#4; ; ;0 0 0 0 0 0&0 0 0&< < <&
* 
* 
*0 0 0       r
   r:   )	__doc__numpyr*   rY   ro   usefixturesr   r   r:   r	   r
   r   <module>ru      s         &&	 	 	 	 	 	 	 '&	 &&E# E# E# E# E#M E# E# '&E#P &&i i i i i] i i '&i i ir
   