
    Eg                        d Z ddlZddlZddlZddl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      c/var/www/sysmax/venv/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          | |d                            }|D ]}|                    |          j        }|dk    sJ t          |t                    sJ |                    |                                          |k    sJ |                    |          j	        dk    sJ d S )Nr   )
listkeys__dataframe__lenget_column_by_name
null_count
isinstanceintsizeoffset)r   r   columnsr   dfXcolumn_sizecolumnr-   s           r   test_only_one_dtyper6      s     9>>##$$G	i	 	 B




Ci
+,,K : :++F33>
Q*c*****%%f--2244CCCC%%f--499999: :r   c           	          | g dg dg dg dg dg dd          }|                                 }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   r>   defr   r         r   r>   r   @   )	r*   itemsr,   r-   r.   r/   r0   r1   dtype)r   r   r3   r2   r5   kindcolXs          r   test_mixed_dtypesrI   -   s?   	 $$$	
 	
	
 	
B 



C AAABR@@G % %%%f--!####$/3/////yy{{a{az!}$$$$$!!#&&,Q/2555555r   c                      | ddt           j        dgi          }|                                }|                    d          }|j        dk    sJ t          |j        t                    sJ d S )Nr   g      ?g       @r   )mathnanr*   r,   r-   r.   r/   r   r   r3   rH   s       r   test_na_floatrN   J   st    	sS$(C01	2	2B




C!!#&&D?ados+++++++r   c                      | dg di          }|                                 }|                    d          }t          j        t          d          5  |j         d d d            d S # 1 swxY w Y   d S )Nr   r8   z.*categorical.*)match)r*   r,   pytestraises	TypeErrordescribe_categoricalrM   s       r   test_noncategoricalrU   R   s    	sIII&	'	'B




C!!#&&D	y(9	:	:	: " "!!" " " " " " " " " " " " " " " " " "s   A))A-0A-c                      | dg did          }|                                                     d          }|j        }t          |d         t                    sJ t          |d         t                    sJ d S )Nweekday)	MonTuerX   WedrX   ThuFriSatSunT)r
   
is_orderedis_dictionary)r*   r,   rT   r.   bool)r   r   rH   categoricals       r   test_categoricalrc   Z   s    		SSST
 
 
B
 00;;D+Kk,/66666k/2D9999999r   c                     | g dg dg dd          }|                                 }|                                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   )re   rg   )r*   num_columnsnum_rows
num_chunksr(   column_namesselect_columnsselect_columns_by_name)r   r   r3   s      r   test_dataframern   f   s(   	!!!			8I8I8IJJ
 
B 



C??!!!!<<>>Q>>q      ""##6666""6**7799::d"":..;;==? ?      r   r0   n_chunks))r;   r   )   r   )rp   r9   c                 (    |dt          t          |                     i          }|                                }t          |                    |                    }t	          |          |k    sJ t          d |D                       | k    sJ d S )Nre   c              3   >   K   | ]}|                                 V  d S N)ri   .0chunks     r   	<genexpr>z%test_df_get_chunks.<locals>.<genexpr>{   s,      44Eu~~444444r   )r(   ranger*   
get_chunksr+   sumr0   ro   r   r   r3   chunkss         r   test_df_get_chunksr}   u   s    	sDt--.	/	/B




C#..**++Fv;;(""""44V44444<<<<<<r   c                 N    |dt          t          |                     i          }|                                }t          |                    d                              |                    }t          |          |k    sJ t          d |D                       | k    sJ d S )Nre   r   c              3   >   K   | ]}|                                 V  d S rs   )r0   rt   s     r   rw   z)test_column_get_chunks.<locals>.<genexpr>   s*      00uzz||000000r   )r(   rx   r*   
get_columnry   r+   rz   r{   s         r   test_column_get_chunksr   ~   s    	sDt--.	/	/B




C#..##..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          }|                                 }|                                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*   get_columnsr0   rj   r   rF   rM   s       r   test_get_columnsr      s    	QF#s44	5	5B




C!! & &yy{{a  A%%%%% >>!"1%****>>!"1%******r   c                 b   g d} | d|i          }|                                 }|                    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   datar   )          rD   r   zBuffer at index z	 mismatch)r*   r   get_buffersbufsizeptr__dlpack_device__ctypesc_int8c_int16c_int32c_int64	enumeratefrom_addressvalue)r   arrr   r3   rH   bufXdataBuf	dataDtypedevice_bitwidthctypeidxtruthvals                  r   test_bufferr      sd   
**C	sCj	!	!B




C>>!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r   )__doc__r   rK   rQ   pandasr   fixturer   markparametrizer6   rI   rN   rU   rc   rn   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   