
    Mh                        S r SSKrSSKrSSKrSSKr\R                  S 5       r\R                  R                  SSS/SS/S	./ S
Q/ SQS	./ SQ/ SQS.// SQS9S 5       r
S rS rS rS rS r\R                  R                  SS// SQ5      S 5       r\R                  R                  SS// SQ5      S 5       rS rS rg)ze
A verbatim copy (vendored) of the spec tests.
Taken from https://github.com/data-apis/dataframe-api
    Nc                      SS jn U $ )Nc                 b    [         R                  " U 5      nU(       a  UR                  S5      $ U$ )Ncategory)pd	DataFrameastype)dctis_categoricaldfs      `/var/www/html/env/lib/python3.13/site-packages/pandas/tests/interchange/test_spec_conformance.pymakerdf_from_dict.<locals>.maker   s&    \\#(6ryy$>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                    [        U R                  5       5      nU" U 5      nUR                  5       n[        XS      5      nU H  nUR	                  U5      R
                  nUS:X  d   e[        U[        5      (       d   eUR	                  U5      R                  5       U:X  d   eUR	                  U5      R                  S:X  a  M   e   g )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_dtyper7      s     9>>#$G	i	 B



Ci
+,K++F3>>
Q*c****%%f-224CCC%%f-44999 r   c           	         U " / SQ/ SQ/ SQ/ SQ/ SQ/ SQS.5      nUR                  5       nSSS	SS
SS.nUR                  5        H  u  pEUR                  U5      nUR                  S:X  d   e[	        UR                  [
        5      (       d   eUR                  5       S:X  d   eUR                  S:X  d   eUR                  S   U:X  a  M   e   UR                  S5      R                  S   S:X  d   eg )Nr   r   r    )r    r!      r   )	   
      )TFT)r    c)r   r   r?   defr   r         r    r?   r   @   )	r+   itemsr-   r.   r/   r0   r1   r2   dtype)r   r   r4   r3   r6   kindcolXs          r   test_mixed_dtypesrJ   -   s    	 $	
	
B 


C AAABR@G%%f-!###$//3////yy{a{{azz!}$$$ ( !!#&,,Q/2555r   c                     U " SS[         R                  S/05      nUR                  5       nUR                  S5      nUR                  S:X  d   e[        UR                  [        5      (       d   eg )Nr   g      ?g       @r   )mathnanr+   r-   r.   r/   r0   r   r   r4   rI   s       r   test_na_floatrO   J   sc    	sS$((C01	2B



C!!#&D??adoos++++r   c                     U " S/ SQ05      nUR                  5       nUR                  S5      n[        R                  " [        SS9   UR
                    S S S 5        g ! , (       d  f       g = f)Nr   r9   z.*categorical.*)match)r+   r-   pytestraises	TypeErrordescribe_categoricalrN   s       r   test_noncategoricalrV   R   sS    	sI&	'B



C!!#&D	y(9	:!! 
;	:	:s   A
A+c                     U " S/ SQ0SS9nUR                  5       R                  S5      nUR                  n[        US   [        5      (       d   e[        US   [        5      (       d   eg )Nweekday)	MonTuerY   WedrY   ThuFriSatSunT)r
   
is_orderedis_dictionary)r+   r-   rU   r/   bool)r   r   rI   categoricals       r   test_categoricalrd   Z   sn    		ST
B
 00;D++Kk,/6666k/2D9999r   c                    U " / SQ/ SQ/ SQS.5      nUR                  5       nUR                  5       S:X  d   eUR                  5       S:X  d   eUR                  5       S:X  d   e[	        UR                  5       5      / SQ:X  d   e[	        UR                  S5      R                  5       5      [	        UR                  S5      R                  5       5      :X  d   eg )	N)TTF)r   r   r   r   )xyzr    r   )r   r   )rf   rh   )r+   num_columnsnum_rows
num_chunksr)   column_namesselect_columnsselect_columns_by_name)r   r   r4   s      r   test_dataframero   f   s    	!	8IJ
B 


C??!!!<<>Q>>q     "#666""6*779:d"":.;;=?   r   r1   n_chunks))r<   r    )   r    )rq   r:   c                     U" S[        [        U 5      5      05      nUR                  5       n[        UR                  U5      5      n[	        U5      U:X  d   e[        S U 5       5      U :X  d   eg )Nrf   c              3   @   #    U  H  oR                  5       v   M     g 7fN)rj   .0chunks     r   	<genexpr>%test_df_get_chunks.<locals>.<genexpr>{   s     4VE~~V   )r)   ranger+   
get_chunksr,   sumr1   rp   r   r   r4   chunkss         r   test_df_get_chunksr   u   sf    	sDt-.	/B



C#..*+Fv;("""4V44<<<r   c                     U" S[        [        U 5      5      05      nUR                  5       n[        UR                  S5      R	                  U5      5      n[        U5      U:X  d   e[        S U 5       5      U :X  d   eg )Nrf   r   c              3   @   #    U  H  oR                  5       v   M     g 7frt   )r1   ru   s     r   rx   )test_column_get_chunks.<locals>.<genexpr>   s     0zz||rz   )r)   r{   r+   
get_columnr|   r,   r}   r~   s         r   test_column_get_chunksr   ~   sq    	sDt-.	/B



C#..#..x89Fv;("""000D888r   c                 X   U " SS/SS/S.5      nUR                  5       nUR                  5        H/  nUR                  5       S:X  d   eUR                  5       S:X  a  M/   e   UR	                  S5      R
                  S   S:X  d   eUR	                  S5      R
                  S   S:X  d   eg )Nr   r   r   r   r   r   )r+   get_columnsr1   rk   r   rG   rN   s       r   test_get_columnsr      s    	QF#s4	5B



C!yy{a A%%% "
 >>!""1%***>>!""1%***r   c                 P   / SQnU " SU05      nUR                  5       nUR                  S5      nUR                  5       nUS   u  pgUR                  S:  d   eUR                  S:w  d   eUR                  5       u  pUS   S:X  d   eUS:X  a  US   n
[        R                  [        R                  [        R                  [        R                  S.U
   n[        U5       HB  u  pUR                  UR                  XS-  -  -   5      R                  nX:X  a  M9   SU S	35       e   g g )
N)r   r   r   r   datar   )          rE   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   r4   rI   bufXdataBuf	dataDtypedevice_bitwidthctypeidxtruthvals                  r   test_bufferr      s&   
C	sCj	!B



C>>!DDfG??Q;;!))+IF Q<1{Q<}}	

  $C.JC$$W[[3a-3H%HIOOC<B#3C5	!BB< ) r   )__doc__r   rL   rR   pandasr   fixturer   markparametrizer7   rJ   rO   rV   rd   ro   r   r   r   r   r   r   r   <module>r      s         enE5>2$56.
 	/  ::6:,"	: &*-/JK= L= &*-/JK9 L9	+Cr   