
    I jc                        S r SSKrSSKrSSKrSSKrSSKJ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      /root/GenerationalWealth/GenerationalWealth/venv/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[        R                  " SS9   UR	                  5       nS S S 5        [        XS      5      nU H  nW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 ! , (       d  f       N= f)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columnr3   s           r   test_only_one_dtyper<      s     9>>#$G	i	 B		#	#-	8  
9 i
+,K++F3>>
Q*c****%%f-224CCC%%f-44999 	 
9	8s   C))
C7c           	      D   U " / SQ/ SQ/ SQ/ SQ/ SQ/ SQS.5      n[         R                  " SS	9   UR                  5       nS S S 5        S
S
SS
SSS.nUR                  5        H  u  pEW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   WR	                  S5      R                  S   S:X  d   eg ! , (       d  f       N= f)Nr   r   r    )r    r!      r   )	   
      )TFT)r    c)r   r   rD   defr)   r*   r   r         r    rD   r   @   )r.   r/   r0   itemsr2   r3   r4   r5   r6   r7   dtype)r   r   r9   r8   r;   kindcolXs          r   test_mixed_dtypesrO   0   s   	 $	
	
B 
	#	#-	8  
9
 AAABR@G%%f-!###$//3////yy{a{{azz!}$$$ ( !!#&,,Q/2555! 
9	8s   D
Dc                 >   U " SS[         R                  S/05      n[        R                  " SS9   UR	                  5       nS S S 5        WR                  S5      nUR                  S:X  d   e[        UR                  [        5      (       d   eg ! , (       d  f       NS= f)Nr   g      ?g       @r)   r*   r   )	mathnanr.   r/   r0   r2   r3   r4   r5   r   r   r9   rN   s       r   test_na_floatrT   N   s    	sS$((C01	2B		#	#-	8  
9!!#&D??adoos++++	 
9	8s   B
Bc                 8   U " S/ SQ05      n[         R                  " SS9   UR                  5       nS S S 5        WR                  S5      n[        R
                  " [        SS9   UR                    S S S 5        g ! , (       d  f       NN= f! , (       d  f       g = f)Nr   r>   r)   r*   z.*categorical.*)r.   r/   r0   r2   pytestraises	TypeErrordescribe_categoricalrS   s       r   test_noncategoricalrZ   W   st    	sI&	'B		#	#-	8  
9!!#&D	y(9	:!! 
;	: 
9	8 
;	:s   A:$B:
B
Bc                 4   U " S/ SQ0SS9n[         R                  " SS9   UR                  5       R                  S5      nS S S 5        WR                  n[        US   [        5      (       d   e[        US   [        5      (       d   eg ! , (       d  f       NO= f)	Nweekday)	MonTuer]   Wedr]   ThuFriSatSunT)r
   r)   r*   
is_orderedis_dictionary)r.   r/   r0   r2   rY   r4   bool)r   r   rN   categoricals       r   test_categoricalrh   `   s    		ST
B
 
	#	#-	8!44Y? 
9++Kk,/6666k/2D9999	 
9	8s    B		
Bc                    U " / SQ/ SQ/ SQS.5      n[         R                  " SS9   UR                  5       nS S S 5        W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 ! , (       d  f       N= f)N)TTF)r   r   r   r   )xyzr)   r*   r    r   )r   r   )rj   rl   )
r.   r/   r0   num_columnsnum_rows
num_chunksr,   column_namesselect_columnsselect_columns_by_name)r   r   r9   s      r   test_dataframers   m   s    	!	8IJ
B 
	#	#-	8  
9 ??!!!<<>Q>>q     "#666""6*779:d"":.;;=?    
9	8s   C88
Dr6   n_chunks))rA   r    )   r    )ru   r?   c                 >   U" S[        [        U 5      5      05      n[        R                  " SS9   UR	                  5       nS S S 5        [        WR                  U5      5      n[        U5      U:X  d   e[        S U 5       5      U :X  d   eg ! , (       d  f       NR= f)Nrj   r)   r*   c              3   @   #    U  H  oR                  5       v   M     g 7fN)rn   .0chunks     r   	<genexpr>%test_df_get_chunks.<locals>.<genexpr>   s     4VE~~V   )r,   ranger.   r/   r0   
get_chunksr1   sumr6   rt   r   r   r9   chunkss         r   test_df_get_chunksr   }   s    	sDt-.	/B		#	#-	8  
9#..*+Fv;("""4V44<<<	 
9	8s   B
Bc                 \   U" S[        [        U 5      5      05      n[        R                  " SS9   UR	                  5       nS S S 5        [        WR                  S5      R                  U5      5      n[        U5      U:X  d   e[        S U 5       5      U :X  d   eg ! , (       d  f       Na= f)Nrj   r)   r*   r   c              3   @   #    U  H  oR                  5       v   M     g 7frx   )r6   ry   s     r   r|   )test_column_get_chunks.<locals>.<genexpr>   s     0zz||r~   )	r,   r   r.   r/   r0   
get_columnr   r1   r   r   s         r   test_column_get_chunksr      s    	sDt-.	/B		#	#-	8  
9#..#..x89Fv;("""000D888	 
9	8s   B
B+c                    U " SS/SS/S.5      n[         R                  " SS9   UR                  5       nS S S 5        W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 ! , (       d  f       N= f)	Nr   r   r   r   r   r)   r*   r   )r.   r/   r0   get_columnsr6   ro   r   rL   rS   s       r   test_get_columnsr      s    	QF#s4	5B		#	#-	8  
9!yy{a A%%% "
 >>!""1%***>>!""1%*** 
9	8s   C		
Cc                    / SQnU " SU05      n[         R                  " SS9   UR                  5       nS S S 5        W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 ! , (       d  f       GN= f)N)r   r   r   r)   r*   r   datar   )          rJ   r   zBuffer at index z	 mismatch)r.   r/   r0   r   get_buffersbufsizeptr__dlpack_device__ctypesc_int8c_int16c_int32c_int64	enumeratefrom_addressvalue)r   arrr   r9   rN   bufXdataBuf	dataDtypedevice_bitwidthctypeidxtruthvals                  r   test_bufferr      sB   
C	sCj	!B		#	#-	8  
9>>!DDfG??Q;;!))+IF Q<1{Q<}}	

  $C.JC$$W[[3a-3H%HIOOC<B#3C5	!BB< )  
9	8s   E
E)__doc__r   rQ   rV   pandasr   pandas._testing_testingr.   fixturer   markparametrizer<   rO   rT   rZ   rh   rs   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   