
    Owg                        d Z ddlZddlZddlZddlZej                  d        Zej                  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                  j                  ddgg d      d        Zej                  j                  ddgg d      d        Zd Zd Zy)ze
A verbatim copy (vendored) of the spec tests.
Taken from https://github.com/data-apis/dataframe-api
    Nc                      dd} | S )Nc                 V    t        j                  |       }|r|j                  d      S |S )Ncategory)pd	DataFrameastype)dctis_categoricaldfs      e/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/interchange/test_spec_conformance.pymakerz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                    t        | j                               } ||       }|j                         }t        | |d            }|D ]z  }|j	                  |      j
                  }|dk(  sJ t        |t              sJ |j	                  |      j                         |k(  sJ |j	                  |      j                  dk(  rzJ  y )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>>
Q*c***%%f-224CCC%%f-44999:r   c           	          | g dg dg dg dg dg dd      }|j                         }ddd	dd
dd}|j                         D ]}  \  }}|j                  |      }|j                  dk(  sJ t	        |j                  t
              sJ |j                         dk(  sJ |j                  dk(  sJ |j                  d   |k(  r}J  |j                  d      j                  d   dk(  sJ y )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zz!}$$$% !!#&,,Q/2555r   c                      | ddt         j                  dgi      }|j                         }|j                  d      }|j                  dk(  sJ t        |j                  t              sJ y )Nr   g      ?g       @r   )mathnanr*   r,   r-   r.   r/   r   r   r3   rH   s       r   test_na_floatrN   J   s`    	sS$((C01	2B



C!!#&D??adoos+++r   c                      | dg di      }|j                         }|j                  d      }t        j                  t        d      5  |j
                   d d d        y # 1 sw Y   y xY w)Nr   r8   z.*categorical.*)match)r*   r,   pytestraises	TypeErrordescribe_categoricalrM   s       r   test_noncategoricalrU   R   s\    	sI&	'B



C!!#&D	y(9	: "!!" " "s   	AA(c                      | dg did      }|j                         j                  d      }|j                  }t        |d   t              sJ t        |d   t              sJ y )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   sh    		ST
B
 00;D++Kk,/666k/2D999r   c                     | g dg dg dd      }|j                         }|j                         dk(  sJ |j                         dk(  sJ |j                         dk(  sJ t	        |j                               g dk(  sJ t	        |j                  d      j                               t	        |j                  d      j                               k(  sJ y )	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    	!	8IJ
B 


C??!!!<<>Q>>q     "#666""6*779:d"":.;;=?   r   r0   n_chunks))r;   r   )   r   )rp   r9   c                      |dt        t        |             i      }|j                         }t        |j                  |            }t	        |      |k(  sJ t        d |D              | k(  sJ y )Nre   c              3   <   K   | ]  }|j                           y wN)ri   .0chunks     r   	<genexpr>z%test_df_get_chunks.<locals>.<genexpr>{   s     4Eu~~4   )r(   ranger*   
get_chunksr+   sumr0   ro   r   r   r3   chunkss         r   test_df_get_chunksr~   u   sf    	sDt-.	/B



C#..*+Fv;("""4V44<<<r   c                      |dt        t        |             i      }|j                         }t        |j                  d      j	                  |            }t        |      |k(  sJ t        d |D              | k(  sJ y )Nre   r   c              3   <   K   | ]  }|j                           y wrs   )r0   rt   s     r   rw   z)test_column_get_chunks.<locals>.<genexpr>   s     0uzz|0rx   )r(   ry   r*   
get_columnrz   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                 L    | ddgddgd      }|j                         }|j                         D ],  }|j                         dk(  sJ |j                         dk(  r,J  |j	                  d      j
                  d   dk(  sJ |j	                  d      j
                  d   dk(  sJ y )Nr   r   r   r   r   r   )r*   get_columnsr0   rj   r   rF   rM   s       r   test_get_columnsr      s    	QF#s4	5B



C! &yy{a A%%%&
 >>!""1%***>>!""1%***r   c                 L   g d} | d|i      }|j                         }|j                  d      }|j                         }|d   \  }}|j                  dkD  sJ |j                  dk7  sJ |j                         \  }}	|d   dk(  sJ |dk(  r|d   }
t        j                  t        j                  t        j                  t        j                  d|
   }t        |      D ]C  \  }}|j                  |j                  ||
dz  z  z         j                  }||k(  r:J d| d	        y y )
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      s7   
C	sCj	!B



C>>!DDfGY??Q;;!))+IFA Q<1{Q<}}	

  $C. 	CJC$$W[[3(a-3H%HIOOC%<B#3C5	!BB<	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$56.
 	/  ::6:,"	: &*-/JK= L= &*-/JK9 L9	+Cr   