
    Pic                        d Z ddlZddlZddlZddlZddlmZ ej	        d             Z
ej                            dddgddgd	g d
g dd	g dg ddgg d          d             Zd Zd Zd Zd Zd Zej                            ddgg d          d             Zej                            ddgg d          d             Zd Zd ZdS )ze
A verbatim copy (vendored) of the spec tests.
Taken from https://github.com/data-apis/dataframe-api
    Nc                      dd} | S )NFc                 \    t          j        |           }|r|                    d          n|S )Ncategory)pd	DataFrameastype)dctis_categoricaldfs      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/interchange/test_spec_conformance.pymakerzdf_from_dict.<locals>.maker   s-    \#(6>ryy$$$B>    )F )r   s    r   df_from_dictr      s    ? ? ? ? Lr   	test_datafoobarbazquxabg      ?      @      @gffffff"@g      %@g'@)            )AB)str_data
float_dataint_data)idsc                 ,   t          |                                           } ||           }t          j        d          5  |                                }d d d            n# 1 swxY w Y   t          | |d                            }|D ]}|                    |          j        }|dk    sJ t          |t                    sJ |                    |          
                                |k    sJ |                    |          j        dk    sJ d S )NInterchangematchr   )listkeystmassert_produces_warning__dataframe__lenget_column_by_name
null_count
isinstanceintsizeoffset)r   r   columnsr   dfXcolumn_sizecolumnr2   s           r   test_only_one_dtyper;      s^    9>>##$$G	i	 	 B		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! i
+,,K : :++F33>
Q*c*****%%f--2244CCCC%%f--499999: :s   A##A'*A'c           	      F    | g dg dg dg dg dg dd          }t          j        d	          5  |                                }d d d            n# 1 swxY w Y   d
d
dd
ddd}|                                D ]}\  }}|                    |          }|j        d
k    sJ t          |j        t                    sJ |                                dk    sJ |j	        d
k    sJ |j
        d
         |k    sJ ~|                    d          j
        d         dk    sJ d S )Nr   r   r   )r   r       r   )	   
      )TFT)r    c)r   r   rC   defr(   r)   r   r         r   rC   r   @   )r-   r.   r/   itemsr1   r2   r3   r4   r5   r6   dtype)r   r   r8   r7   r:   kindcolXs          r   test_mixed_dtypesrN   0   s   	 $$$	
 	
	
 	
B 
	#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
 AAABR@@G % %%%f--!####$/3/////yy{{a{az!}$$$$$!!#&&,Q/2555555s   AAAc                 8    | ddt           j        dgi          }t          j        d          5  |                                }d d d            n# 1 swxY w Y   |                    d          }|j        dk    sJ t          |j        t                    sJ d S )Nr   g      ?g       @r(   r)   r   )	mathnanr-   r.   r/   r1   r2   r3   r4   r   r   r8   rM   s       r   test_na_floatrS   N   s    	sS$(C01	2	2B		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!!#&&D?ados+++++++s   AAAc                 F    | dg di          }t          j        d          5  |                                }d d d            n# 1 swxY w Y   |                    d          }t	          j        t          d          5  |j         d d d            d S # 1 swxY w Y   d S )Nr   r=   r(   r)   z.*categorical.*)r-   r.   r/   r1   pytestraises	TypeErrordescribe_categoricalrR   s       r   test_noncategoricalrY   W   s*   	sIII&	'	'B		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!!#&&D	y(9	:	:	: " "!!" " " " " " " " " " " " " " " " " "s#   AA
A
BBBc                 R    | dg did          }t          j        d          5  |                                                    d          }d d d            n# 1 swxY w Y   |j        }t          |d         t                    sJ t          |d         t                    sJ d S )	Nweekday)	MonTuer\   Wedr\   ThuFriSatSunT)r
   r(   r)   
is_orderedis_dictionary)r-   r.   r/   r1   rX   r3   bool)r   r   rM   categoricals       r   test_categoricalrg   `   s	   		SSST
 
 
B
 
	#-	8	8	8 @ @!!44Y??@ @ @ @ @ @ @ @ @ @ @ @ @ @ @+Kk,/66666k/2D9999999s   (AA"Ac                 x    | g dg dg dd          }t          j        d          5  |                                }d d d            n# 1 swxY w Y   |                                dk    sJ |                                dk    sJ |                                dk    sJ t          |                                          g dk    sJ t          |                    d	                                                    t          |	                    d
                                                    k    sJ d S )N)TTF)r   r   r   r   )xyzr(   r)   r   r   )r   r   )ri   rk   )
r-   r.   r/   num_columnsnum_rows
num_chunksr+   column_namesselect_columnsselect_columns_by_name)r   r   r8   s      r   test_dataframerr   m   s   	!!!			8I8I8IJJ
 
B 
	#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ??!!!!<<>>Q>>q      ""##6666""6**7799::d"":..;;==? ?      s   AAAr5   n_chunks))r@   r   )   r   )rt   r>   c                     |dt          t          |                     i          }t          j        d          5  |                                }d d d            n# 1 swxY w Y   t          |                    |                    }t          |          |k    sJ t          d |D                       | k    sJ d S )Nri   r(   r)   c              3   >   K   | ]}|                                 V  d S N)rm   .0chunks     r   	<genexpr>z%test_df_get_chunks.<locals>.<genexpr>   s,      44Eu~~444444r   )r+   ranger-   r.   r/   
get_chunksr0   sumr5   rs   r   r   r8   chunkss         r   test_df_get_chunksr   }   s    	sDt--.	/	/B		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !#..**++Fv;;(""""44V44444<<<<<<   AA"%A"c                     |dt          t          |                     i          }t          j        d          5  |                                }d d d            n# 1 swxY w Y   t          |                    d                              |                    }t          |          |k    sJ t          d |D                       | k    sJ d S )Nri   r(   r)   r   c              3   >   K   | ]}|                                 V  d S rw   )r5   rx   s     r   r{   z)test_column_get_chunks.<locals>.<genexpr>   s*      00uzz||000000r   )	r+   r|   r-   r.   r/   
get_columnr}   r0   r~   r   s         r   test_column_get_chunksr      s
   	sDt--.	/	/B		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !#..##..x8899Fv;;(""""0000000D888888r   c                     | ddgddgd          }t          j        d          5  |                                }d d d            n# 1 swxY w Y   |                                D ]6}|                                dk    sJ |                                dk    sJ 7|                    d          j        d         dk    sJ |                    d          j        d         dk    sJ d S )	Nr   r   r   r   r   r(   r)   r   )r-   r.   r/   get_columnsr5   rn   r   rK   rR   s       r   test_get_columnsr      s=   	QF#s44	5	5B		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!! & &yy{{a  A%%%%% >>!"1%****>>!"1%******s   A		AAc                    g d} | d|i          }t          j        d          5  |                                }d d d            n# 1 swxY w Y   |                    d          }|                                }|d         \  }}|j        dk    sJ |j        dk    sJ |                                \  }}	|d         dk    sJ |dk    r|d         }
t          j	        t          j
        t          j        t          j        d|
         }t          |          D ]C\  }}|                    |j        ||
d	z  z  z             j        }||k    sJ d
| d            Bd S d S )N)r   r   r   r(   r)   r   datar   )          rI   r   zBuffer at index z	 mismatch)r-   r.   r/   r   get_buffersbufsizeptr__dlpack_device__ctypesc_int8c_int16c_int32c_int64	enumeratefrom_addressvalue)r   arrr   r8   rM   bufXdataBuf	dataDtypedevice_bitwidthctypeidxtruthvals                  r   test_bufferr      s   
**C	sCj	!	!B		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !>>!DDfGY?Q;!))++IFA Q<1{{Q<}	
 

  $C.. 	C 	CJC$$W[3(a-3H%HIIOC%<<<!BC!B!B!B<<<< {	C 	Cs   AAA)__doc__r   rP   rU   pandasr   pandas._testing_testingr-   fixturer   markparametrizer;   rN   rS   rY   rg   rr   r   r   r   r   r   r   r   <module>r      s   
                 enE5>22oo$5$5$566ll..
 	/..   : : :6 6 6<, , ," " "
: 
: 
:    &*-/J/J/JKK= = LK= &*-/J/J/JKK9 9 LK9
+ 
+ 
+C C C C Cr   