
    A>i_                     &   S SK J r Jr  S SKrS SKrS SKJr  S SKJrJ	r	  S SK
rS SKJr  S SKJr  S SKJrJr  S SKJr  S SKJr  \R0                  R3                  S	S
S/5      S 5       rS r\R0                  R9                  S5      S 5       rS r\R0                  R3                  SS SS\" S5      S/4SS\" S5      S/4SSS/4S SS\" S5      /4S SS/4SS\" S5      /4/5      S 5       r \R0                  R3                  S	S S S S S /5      S 5       r!S r"\R0                  R3                  S	/ SQ/ S QS!./ S"Q/ S QS!.\RF                  " / S#Q5      \RF                  " / S"Q5      \RF                  " / S Q5      S$./5      S% 5       r$S& r%S' r&S( r'S) r(S* r)\R0                  R3                  S	0 S+/ 0/5      S, 5       r*SwS. jr+SwS/ jr,S0 r-\R0                  R3                  S1S2S3/5      S4 5       r.S5 r/SwS6 jr0S7 r1S8 r2S9 r3S: r4\R0                  R3                  S;/ S<QS=S>4/ S<QS?S>4/ S<QS@SA4/ S<QSBSA4/ S<QSCSD4/ S<QSESD4/ SFQSGSH4/ SFQSISH4/ SJQSKSL4/ SJQSMSL4/ SNQ\Rj                  " \Rl                  SO9SP4/ SNQSQSP4\ " SRSS5      \ " SRSS5      S/SSST4\ " SRSS5      \ " SRSS5      S/SUSV4\ " SRSS\Rn                  SW9\ " SRSS\Rn                  SW9S/SXSY4/5      S	\8SZ\9S[\9S-S4S\ j5       r:\R0                  R3                  S;/ S]QS=S>4/ S]QS?S>4/ S]QS@SA4/ S]QSBSA4/ S]QSCSD4/ S]QSESD4/ S^QSGSH4/ S^QSISH4/ S_QSKSL4/ S_QSMSL4/ S`Q\Rj                  " \Rl                  SO9SP4/ S`QSQSP4\ " SRSS5      \ " SRSS5      \ " SRSSa5      /SSST4\ " SRSS5      \ " SRSS5      \ " SRSSa5      /SUSV4\ " SRSS\Rn                  SW9\ " SRSS\Rn                  SW9\ " SRSSa\Rn                  SW9/SXSY4/5      S	\8SZ\9S[\9S-S4Sb j5       r;SwSc jr<SwSd jr=Se r>\R0                  R3                  Sf\R~                  " / SgQShSi9\R                  SjSkSl4\R                  SjSkSm44\R~                  " \ " SnSS5      \ " SnSS5      \ " SnSSa5      /SoSi9\R                  SpSqSl4\R                  Sp\R                  Sl44\R~                  " / SrQ5      \R                  Sj\R                  Sl4\R                  Sj\R                  Sl44\R~                  " / S]Q5      \R                  Sp\R                  Sl4\R                  Sp\R                  Sl44\R~                  " / SsQ5      \R                  Sp\R                  Sl4\R                  Sp\R                  Sl44/5      S	\R~                  S[\I\\J\9\94   St\I\\J\9\94   S-S4Su j5       rKSv rLg)x    )datetimetimezoneN)iNaT)is_ci_environmentis_platform_windows)PandasColumn)ColumnNullType	DtypeKindfrom_dataframe)ArrowCTypesdata)orderedT)	unorderedFc                    [         R                  " [        S5      S-  SS9[         R                  " [        S5      S-  SS9S.n[         R                  " SXS      05      n[        R
                  " S	S
9   UR                  5       R                  S5      nS S S 5        WR                  S   [        R                  :X  d   eUR                  S:X  d   eUR                  [        R                  S4:X  d   eUR                  5       S:X  d   eUR                   nUS   U S   :X  d   eUS   SL d   e[#        US   [$        5      (       d   e[        R&                  " US   R(                  [         R*                  " / SQ5      5        [        R
                  " S	S
9   [        R,                  " U[/        UR                  5       5      5        S S S 5        g ! , (       d  f       GN@= f! , (       d  f       g = f)Ntestdata   T)r   F)r   r   Ar   Interchangematch   
is_orderedis_dictionary
categories)adest)pdCategoricallist	DataFrametmassert_produces_warning__dataframe__get_column_by_namedtyper
   CATEGORICAL
null_countdescribe_nullr	   USE_SENTINEL
num_chunksdescribe_categorical
isinstancer   assert_series_equal_colSeriesassert_frame_equalr   )r   data_categoricaldfcoldesc_cats        a/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/interchange/test_impl.pytest_categorical_dtyper;      s    >>$z"2R"7F^^D$4r$95I 
s-1g68	9B		#	#-	8 33C8 
999Q<900000>>Q!<!<b AAAA>>q   ''HL!T!W,,,O$,,,h|,l;;;;##RYY/H%I 
	#	#-	8
b.1A1A1C"DE 
9	8 
9	8 
9	8s   5 G/G 
G 
G.c                     [         R                  " SS5      n / SQnU R                  SU R                  U5      R	                  5       05      nUR                  5       n[        R                  " SS9   [        U5      nS S S 5        [        R                  " U/ SQS9n[        R                  " SU05      n[        R                  " WU5        g ! , (       d  f       NU= f)	Npyarrow11.0.0)	MonTuer?   Wedr?   ThuFriSatSunweekdayr   r   )r?   r@   rA   rB   rC   rD   rE   )r   )pytestimportorskiptablearraydictionary_encoder(   r&   r'   r   r"   r#   r%   r5   )paarrrI   exchange_dfresultrF   expecteds          r:   test_categorical_pyarrowrQ   4   s    			Y	1B
ICHHi#!@!@!BCDE%%'K		#	#-	8, 
9nnIG ||Y01H&(+ 
9	8s   0C
CzDignore:Constructing a Categorical with a dtype and values containingc                     [         R                  " SS5      n S /nU R                  SU R                  US5      R	                  5       05      nUR                  5       n[        R                  " SS9   [        R                  R                  R                  U5      nS S S 5        [        R                  " S[        R                  " [        R                  /5      05      n[        R                   " WU5        g ! , (       d  f       Na= f)Nr=   r>   rM   float64r   r   )rG   rH   rI   rJ   rK   r(   r&   r'   r"   apiinterchanger   r%   r#   npnanr5   rL   rM   rI   rN   rO   rP   s         r:   test_empty_categorical_pyarrowrY   D   s    
 
		Y	1B&CHHeRXXc95GGIJKE%%'K		#	#-	8##22;? 
9||UBNNBFF8$<=>H&(+ 
9	8s   0*C55
Dc                  L   [         R                  " SS5      n SS/nU R                  SU R                  US5      05      nUR	                  5       n[
        R                  " SS9   [        U5      nS S S 5        [        R                  " SSS/05      n[
        R                  " WU5        [
        R                  " SS	S
9   U R                  R                  U R                  R                  U5      U5      (       d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr=   r>   r?   r@   rF   large_stringr   r   Fr   check_stacklevel)rG   rH   rI   rJ   r(   r&   r'   r   r"   r%   r5   TableequalsrU   rX   s         r:   test_large_string_pyarrowr`   T   s    			Y	1B%.CHHi#~!>?@E%%'K		#	#-	8, 
9||Y78H&(+ 
	#	#-%	Pxxr~~<<VDeLLLL 
Q	P 
9	8 
Q	Ps   #D==D
D
D#)offsetlengthexpected_valuesffffff
@rW    @r      c                 F   [         R                  " SS5      n/ SQnUR                  SU05      R                  X5      nUR	                  5       n[
        R                  " SS9   [        U5      nS S S 5        [        R                  " SU05      n[
        R                  " WU5        [
        R                  " SSS9   UR                  R                  UR                  R                  U5      U5      (       d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nr=   r>   )rd   Nre   rM   r   r   Fr\   )rG   rH   rI   slicer(   r&   r'   r   r"   r%   r5   r^   r_   rU   )	ra   rb   rc   rL   rM   rI   rN   rO   rP   s	            r:   test_bitmasks_pyarrowri   f   s     
		Y	1B
CHHeS\"((8E%%'K		#	#-	8, 
9||UO45H&(+ 
	#	#-%	Pxxr~~<<VDeLLLL 
Q	P 
9	8 
Q	Ps   "D:=D
D
D c                  `    [         R                  R                  S5      R                  SS5      $ )Nrf   id   rV   randomdefault_rngintegers     r:   <lambda>rr      s     		%%a(11$<rq   c                  `    [         R                  R                  S5      R                  SS5      $ )Nrf   r   rk   rl   rp   rq   r:   rr   rr      s     		%%a(11!S9rq   c                  \    [         R                  R                  S5      R                  5       $ )Nrf   )rV   rm   rn   rp   rq   r:   rr   rr      s    		%%a(//1rq   c                  b    [         R                  R                  S5      R                  SS/5      $ )Nrf   TF)rV   rm   rn   choicerp   rq   r:   rr   rr      s"    		%%a(//u>rq   c                  &   [        [        R                  R                  S5      R	                  SS5      [        R                  R                  S5      R	                  SS5      [        R                  R                  S5      R	                  SS5      S9$ )Nrf   il  i4  r         )yearmonthday)r   rV   rm   rn   ro   rp   rq   r:   rr   rr      sf    &&q)224>))''*33Ar:		%%a(11!R8
rq   c           
        ^  Su  p[        U5       VVs0 s H<  nS[        X1S-  -
  U-  S-   5       3[        U5       Vs/ s H
  nT " 5       PM     sn_M>     snnm [        R                  " T 5      n[        R
                  " SS9   UR                  5       nS S S 5        WR                  5       U:X  d   eUR                  5       U:X  d   e[        UR                  5       5      [        T R                  5       5      :X  d   eSn[        U 4S jU 5       5      n[        R
                  " SS9   [        UR                  U5      5      n	[        UR                  U5      5      n
S S S 5        [        R                   " W	W
5        [#        U	R$                  S	   [        5      (       d   e[#        U
R$                  S	   [        5      (       d   eg s  snf s  snnf ! , (       d  f       GND= f! , (       d  f       N= f)
N)
   ry   r8   rf   r   r   r   )r   rf   c              3   \   >#    U  H!  n[        TR                  5       5      U   v   M#     g 7fN)r$   keys).0idxr   s     r:   	<genexpr>!test_dataframe.<locals>.<genexpr>   s!     <GS$tyy{#C(Gs   ),_INTERCHANGE_PROTOCOL_BUFFERS)rangeintr"   r%   r&   r'   r(   num_columnsnum_rowsr$   column_namesr   tupler   select_columnsselect_columns_by_namer5   r1   attrs)r   NCOLSNROWSi_r7   df2indicesnamesrO   rP   s   `          r:   test_dataframer      s    LE uA c1qy=E)A-./05<2P<a46<2PPD 
d	B		#	#-	8  
9 ??%%%<<>U"""  "#tDIIK'8888G<G<<E		#	#-	8 2 27 ;<!#"<"<U"CD 
9 &(+fll#BCTJJJJhnn%DEtLLLL- 3Q 
9	8 
9	8s.   +GGGG+5G%G
G"%
G3c            
         [         R                  " [        R                  " / SQ5      [        R                  " / SQ5      [        R                  " / SQ5      S.5      n [        R                  R                  S5      nU R                   Vs0 s H  o"UR                  S[        U 5      S9_M     nnUR                  5        HP  u  p$U R                  UR                  [        R                  " [        U 5      5      USS	9   nS U R                  XR4'   MR     [        R                  " S
S9   U R!                  5       nS S S 5        WR#                  S5      R$                  US   :X  d   eUR#                  S5      R$                  US   :X  d   eUR#                  S5      R$                  US   :X  d   eg s  snf ! , (       d  f       N= f)N)      ?       @g      @g      @        )      ?      @      @g      @r   )r   r   r   r   r   xyzrf   r   )lowhighF)sizereplacer   r   r   r   r   )r"   r%   rV   rJ   rm   rn   columnsro   lenitemsindexrv   arangelocr&   r'   r(   r)   r,   )r7   rngr8   	dict_null	num_nullsnull_idxr   s          r:   test_missing_from_maskedr      sm   	341234	

B ))


"CCE::N:Ccllqs2wl77:IN#//+88JJryyR)	5JI
 !%x}	 , 
	#	#-	8  
9 !!#&11Ys^CCC!!#&11Ys^CCC!!#&11Ys^CCC O 
9	8s   
#F-'F22
G )r   r   r   )ffffff"@      %@皙'@)r   r   )r   rf   r   )TTFr   c                    [         R                  " U 5      n[        R                  " SS9   UR	                  5       nS S S 5        UR
                   H$  nWR                  U5      R                  S:X  a  M$   e   g ! , (       d  f       NC= f)Nr   r   r   )r"   r%   r&   r'   r(   r   r)   r,   )r   r7   r   col_names       r:   test_mixed_datar      sk     
d	B		#	#-	8  
9 JJ%%h/::a???  
9	8s   A99
Bc                     [         R                  " [        R                  " / SQ5      [        R                  " / SQ5      [        R                  " / SQ5      S.5      n [        R
                  " SS9   U R                  5       nS S S 5        U R                   H$  nWR                  U5      R                  S:X  a  M$   e   g ! , (       d  f       NC= f)N)TNFNT)Nrf   Nr   rf   )r   r   Nr   Nr   r   r   rf   )
r"   r%   rV   rJ   r&   r'   r(   r   r)   r,   )r7   r   r   s      r:   test_mixed_missingr      s    	9:/078	

B 
	#	#-	8  
9 JJ%%h/::a???  
9	8s   1B??
Cc                  h   SSSSS[         R                  /0n U S   S/-   n[        R                  " SU05      n[        R
                  " SS	9   UR                  5       R                  S5      nS S S 5        WR                  5       S
:X  d   eUR                  S:X  d   eUR                  S   [        R                  :X  d   eUR                  [        R                  S4:X  d   eUSS  n[        R
                  " SS	9   UR                  5       R                  S5      nS S S 5        UR                  5       S:X  d   eUR                  S:X  d   eUR                  S   [        R                  :X  d   eUR                  [        R                  S4:X  d   eg ! , (       d  f       GN+= f! , (       d  f       N= f)Nzseparator datazabC|DeF,Hikz234,3245.67zgSaf,qWer|Grez
asd3,4sad| r   r   r      r   r      )rV   rW   r"   r%   r&   r'   r(   r)   r   r,   r*   r
   STRINGr-   r	   USE_BYTEMASK)string_datatest_str_datar7   r8   	df_sliceds        r:   test_stringr      s   FF
K   01RD8M	sM*	+B		#	#-	8 33C8 
9 88:??>>Q99Q<9+++++!<!<a @@@@12I		#	#-	8%%'::3? 
988:??>>Q99Q<9+++++!<!<a @@@@ 
9	8 
9	8s    F; F#
F #
F1c                  P   [         R                  " S/ SQ05      n [        R                  " SS9   U R	                  5       R                  S5      nS S S 5        [        R                  " [        SS9   WR                    S S S 5        g ! , (       d  f       N== f! , (       d  f       g = f)Nr   )r   r~   r   rp   r   r   znot supported yet)
r"   r%   r&   r'   r(   r)   rG   raisesNotImplementedErrorr*   r7   r8   s     r:   test_nonstring_objectr     sr    	s./	0B		#	#-	8 33C8 
9	*2E	F		 
G	F 
9	8	F	Fs    B0B
B
B%c                     [         R                  " S[         R                  " S5      [         R                  /05      n [        R
                  " SS9   U R                  5       R                  S5      nS S S 5        WR                  5       S:X  d   eUR                  S:X  d   eUR                  S   [        R                  :X  d   eUR                  [        R                  [         4:X  d   e[        R
                  " SS9   [        R"                  " U [%        U R                  5       5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   z
2022-01-01r   r   rf   r   r   )r"   r%   	TimestampNaTr&   r'   r(   r)   r   r,   r*   r
   DATETIMEr-   r	   r.   r   r5   r   r   s     r:   test_datetimer     s    	sR\\,7@A	BB		#	#-	8 33C8 
9 88:??>>Q99Q<9-----!<!<d CCCC		#	#-	8
b.1A1A1C"DE 
9	8 
9	8 
9	8s    D6>/E6
E
Ec                     [         R                  " S[         R                  " / SQ5      05      n [        R                  " SS9   U R                  5       R                  S5      nS S S 5        [        R                  " WR                  5       S   S   5      n[        R                  " / SQSS	9n[        R                  " X#5        g ! , (       d  f       Nf= f)
Nr   r   br   r   r   r   r   )r   r   r   int8r*   )r"   r%   r#   r&   r'   r(   r)   rV   from_dlpackget_buffersrJ   assert_numpy_array_equal)r7   r8   rO   rP   s       r:    test_categorical_to_numpy_dlpackr     s    	sBNN?;<	=B		#	#-	8 33C8 
9^^COO-f5a89Fxx	0H1	 
9	8s    C
Cr   c                    [         R                  " SS5        SSKJn  [        R
                  " U 5      n[        R                  " SSS9   U" U5      nS S S 5        [        W5      n[        R                  " XBSS9  g ! , (       d  f       N/= f)	Nr=   14.0.0r   r   r   Fr\   )check_column_type)	rG   rH   pyarrow.interchanger   r"   r%   r&   r'   r5   )r   pa_from_dataframerP   arrow_dfrO   s        r:   test_empty_pyarrowr   (  si     	8,G||D!H		#	#-%	P$X. 
QH%F&eD 
Q	Ps   		A;;
B	returnc                  >   [         R                  " SS5      n U R                  / SQ/ SQ/5      nS/nU R                  U/US9n[         R                  " [
        SS9   [        R                  R                  R                  US	S
9  S S S 5        g ! , (       d  f       g = f)Nr=   r   )rf   rf      )r   r   rk   n_legs)r   z@Cannot do zero copy conversion into multi-column DataFrame blockr   F
allow_copy)
rG   rH   chunked_arrayrI   r   RuntimeErrorr"   rT   rU   r   )rL   r   r   rI   s       r:   test_multi_chunk_pyarrowr   6  s    			Y	1By+67FJEHHfXUH+E	P
 	))%E)B	
 
 
s   )B
Bc                     [         R                  " SS5        [        R                  " / SQSS9n [        R                  " X /SS9R                  S5      nUR                  5       n[        R                  " S	S
9   [         R                  " [        SS
9   [        R                  R                  R                  UR                  SS95        S S S 5        S S S 5        [        R                  " S	S
9   [        R                  R                  R                  UR                  SS95      nS S S 5        [        R                  " S/ SQ0SS9n[        R                   " WU5        [        R                   " X5        [#        US   R$                  R&                  R(                  5      S:X  d   e[#        US   R$                  R&                  R(                  5      S:X  d   eg ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f)Nr=   r>   r   rf   NInt64[pyarrow]r   T)ignore_indexr   r   r   z:Found multi-chunk pyarrow array, but `allow_copy` is FalseFr   )r   r   Nr   r   NrS   rf   )rG   rH   r"   r4   concatto_framecopyr&   r'   r   r   rT   rU   r   r(   r%   r5   r   rJ   	_pa_arraychunks)serr7   df_origrO   rP   s        r:   test_multi_chunk_columnr   B  s   
	8,
))L(8
9C	C:D	1	:	:3	?BggiG		#	#-	8]]N
 FF--b.>.>%.>.PQ	
 
9 
	#	#-	8##2223C3Ct3C3TU 
9 ||S"BC9UH&(+ "&r#w}}&&--.!333ws|!!++223q888
 
 
9	8 
9	8s0   8G)7G	G)-7G;
G&	!G))
G8;
H	c                     [         R                  " SS5        SSSSSSS.n [        R                  " [	        S0 U D6/SSS9R                  5       n[        R                  " S	S
9   UR                  5       n[        R                  R                  R                  U5      S   R                  5       nS S S 5        [        R                  " S0 U D6nWU:X  d   eg ! , (       d  f       N-= f)Nr=   r>   i  r   )rz   r{   r|   hourminutesecondtimestamp[ns][pyarrow]col0)r*   namer   r   rp   )rG   rH   r"   r4   r   r   r&   r'   r(   rT   rU   r   itemr   )timestamp_argsr7   dfirO   rP   s        r:   test_timestamp_ns_pyarrowr   [  s    
	8,N 
		#N	#$&
 hj	  
	#	#-	8 ##2237?DDF 
9 ||-n-HX 
9	8s   #AC
C#tzUTCz
US/Pacificc                 T   [         R                  " SSSS9R                  U 5      R                  U5      n[         R                  " SU05      n[
        R                  " SS9   [
        R                  " U[        UR                  5       5      5        S S S 5        g ! , (       d  f       g = f)Nz
2018-01-01r   D)periodsfreqts_tzr   r   )
r"   
date_rangetz_localizeas_unitr%   r&   r'   r5   r   r(   )r   unittz_datar7   s       r:   test_datetimetzdtyper
  t  s}     	lAC8DDRHPPQUV  
w(	)B		#	#-	8
b.1A1A1C"DE 
9	8	8s   !/B
B'c           	      |   [         R                  " SS5      nSS KJn  [	        5       (       aH  [        5       (       a9  [         R                  R                  UR                  SS9nU R                  U5        UR                  [        SSS5      S [        SSS5      /5      nUR                  US	5      nUR                  S
U05      nUR                  5       n[        R                   " SS9   [#        U5      nS S S 5        [$        R&                  " / SQS
/SS9n[        R(                  " UW5        g ! , (       d  f       N?= f)Nr=   r>   r   z_TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.)r   reason  r   rf   Asia/KathmandurM   r   r   )z2020-01-01 00:00:00+05:45r   z2020-01-02 00:00:00+05:45zdatetime64[us, Asia/Kathmandu])r   r*   )rG   rH   pyarrow.computecomputer   r   markxfailArrowInvalidapplymarkerrJ   r   assume_timezonerI   r(   r&   r'   r   r"   r%   r5   )	requestrL   pcr  rM   rI   rN   rO   rP   s	            r:   )test_interchange_from_non_pandas_tz_awarer    s   			Y	1B !2!4!4{{  ??; ! 
 	D!
((HT1a($q!0DE
FC


S"2
3CHHeS\"E%%'K		#	#-	8, 
9 ||I.H
 (F+ 
9	8s   (D--
D;c                   ^^^ [         R                  " SS9   [        R                  " SSS/05      R	                  5       nUR	                  5       mS S S 5        TR                  S5      mTR                  5       mTS   nUS   n[        R                  S[        R                  US	   4nUS
   U4TS'   U4S jTl        U4S jTl        U R                  WSU4S j5        [         R                  " SS9   [        R                  R                  R                  U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r   foobarr   r         r   c                     > T $ r   rp   )bufferss   r:   rr   ?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>  s    rq   c                    > T$ r   rp   )r   columns    r:   rr   r     s    vrq   r(   c                    > T$ r   rp   )r   rU   s    r:   rr   r     s    rq   )r&   r'   r"   r%   r(   r)   r   r
   UINTr   UINT8setattrrT   rU   r   )monkeypatchr7   buffers_databuffer_dtyper  r"  rU   s       @@@r:   -test_interchange_from_corrected_buffer_dtypesr*    s   		#	#-	8\\3/0>>@&&( 
9 ++C0F  "G6?L?L	Q	L $A5GFO(F%5K"O-KL		#	#-	8
))"- 
9	8# 
9	8" 
9	8s   9D'4*D8'
D58
Ec                  6   [         R                  " S/ 0[        S9n [        R                  " SS9   U R                  5       n[         R                  R                  R                  U5      nS S S 5        [        R                  " U W5        g ! , (       d  f       N&= f)Nr   r   r   r   )
r"   r%   strr&   r'   r(   rT   rU   r   r5   )r7   r   rO   s      r:   test_empty_string_columnr-    sl    	sBis	+B		#	#-	8 ##2237 
9 "f% 
9	8s   :B


Bc                     [         R                  " S5        [        R                  " SS/0SS9n [        R
                  " SSS9   [        R                  R                  R                  U R                  5       5      nS S S 5        [        R                  " SS/0S	S9n[        R                  " WU5        g ! , (       d  f       N>= f)
Nr=   r   r   large_string[pyarrow]r   r   Fr\   r,  )rG   rH   r"   r%   r&   r'   rT   rU   r   r(   r5   )r7   rO   rP   s      r:   test_large_stringr0    s    
	"	sSEl*A	BB		#	#-%	P##2223C3C3EF 
Q||S3%L6H&(+ 
Q	Ps   8B44
Cc                      [         R                  " / SQSS9R                  5       n [        R                  " SS9   U R                  5       R                  5       nS S S 5        WS/:X  d   eg ! , (       d  f       N= f)Nr   rf   r  r   )r   r   r   0)r"   r4   r   r&   r'   r(   r   )r7   r   s     r:   test_non_str_namesr4    s\    	91	%	.	.	0B		#	#-	8  "//1 
9SE>> 
9	8s   A++
A9c                     [         R                  " / SQ/ SQS.5      n [        R                  " SS9   U R	                  5       nS S S 5        [        R                  " SS9   [
        R                  " [        SS9   [         R                  R                  R                  WSS9  S S S 5        S S S 5        g ! , (       d  f       Nv= f! , (       d  f       N(= f! , (       d  f       g = f)	Nr2  r   r   r   )r3  r   r   r   a&  Expected a Series, got a DataFrame. This likely happened because you called __dataframe__ on a DataFrame which, after converting column names to string, resulted in duplicated names: Index\(\['0', '0'\], dtype='(str|object)'\). Please rename these columns before using the interchange protocol.Fr   )r"   r%   r&   r'   r(   rG   r   	TypeErrorrT   rU   r   )r7   r   s     r:   test_non_str_names_w_duplicatesr8    s    	I)4	5B		#	#-	8  
9		#	#-	8]](	
 FF--ce-D	
 
9	8 
9	8	
 	
 
9	8s/   B3C9)C"C3
C
C	C
C#)r   r*   expected_dtyper   Int64int64r   Int8r   zInt8[pyarrow]UInt64uint64zUInt64[pyarrow])r         @NFloat32float32zFloat32[pyarrow])TFNbooleanboolzboolean[pyarrow])much adoaboutN)na_valuer[   zstring[pyarrow]r  r   ztimestamp[ns]ztimestamp[us][pyarrow]ztimestamp[us])tzinfoz&timestamp[us, Asia/Kathmandu][pyarrow] timestamp[us, tz=Asia/Kathmandu]r*   r9  c                    [         R                  " SS5      nSS KJn  US:X  a  UR	                  SS5      n[
        R                  " SU 0US9n[        R                  " S	S
9   UR                  UR                  5       5      S   nS S S 5        WR                  U:X  d   eUS   R                  5       U S   :X  d   eUS   R                  5       U S   :X  d   eUS   R                  5       b   eg ! , (       d  f       No= fNr=   r   r   rH  usr  r   r   r   r   r   rf   rG   rH   r   rU   	timestampr"   r%   r&   r'   r   r(   typeas_pyr   r*   r9  rL   pair7   rO   s          r:   (test_pandas_nullable_with_missing_valuesrR    s    b 
		Y	1B%;;d,<=	sDk	/B		#	#-	8##B$4$4$67< 
9;;.(((!9??Q'''!9??Q'''!9??$$$ 
9	8s   !#C--
C;r2  )r   r?  g      @)TFF)rD  rE  nothingr  c                    [         R                  " SS5      nSS KJn  US:X  a  UR	                  SS5      n[
        R                  " SU 0US9n[        R                  " S	S
9   UR                  UR                  5       5      S   nS S S 5        WR                  U:X  d   eUS   R                  5       U S   :X  d   eUS   R                  5       U S   :X  d   eUS   R                  5       U S   :X  d   eg ! , (       d  f       Nu= frJ  rL  rP  s          r:   +test_pandas_nullable_without_missing_valuesrU  #  s    h 
		Y	1B%;;d,<=	sDk	/B		#	#-	8##B$4$4$67< 
9;;.(((!9??Q'''!9??Q'''!9??Q''' 
9	8s   !#C33
Dc                  (   [         R                  " SS5        [        R                  " SS/0SS9n [        R
                  " SS9   U R                  5       R                  S5      R                  5       S	   nS S S 5        Wb   eg ! , (       d  f       N= f)
Nr=   r>   r   r   r/  r   r   r   validity)	rG   rH   r"   r%   r&   r'   r(   r)   r   )r7   rO   s     r:   test_string_validity_bufferrX  f  sv    
	8,	sSEl*A	BB		#	#-	8!!#66s;GGI*U 
9>> 
9	8s   1B
Bc                     [         R                  " SS5        [        R                  " SSS /0SS9n [        R
                  " SS9   U R                  5       R                  S5      R                  5       S	   nS S S 5        Wc   eUS
   n[        R                  S
[        R                  S4nX#:X  d   eg ! , (       d  f       NB= f)Nr=   r>   r   r   r/  r   r   r   rW  r   =)rG   rH   r"   r%   r&   r'   r(   r)   r   r
   BOOLr   )r7   rW  rO   rP   s       r:   &test_string_validity_buffer_no_missingr\  o  s    
	8,	sS$K(0G	HB		#	#-	8##%88=IIKJW 
9a[F;#3#3S9H 
9	8s   1B22
C c                  Z   [         R                  " S/ 0SS9n [        R                  " SS9   U R	                  5       n[         R
                  R                  R                  USS9nS S S 5        [         R                  " S/ 0SS9n[        R                  " WU5        g ! , (       d  f       N== f)Nr   r   r   r   r   Fr   )	r"   r%   r&   r'   r(   rT   rU   r   r5   )r7   r   rO   rP   s       r:   test_empty_dataframer^  {  s    	sBiv	.B		#	#-	8 ##22352I 
9 ||S"IV4H&(+	 
9	8s   9B
B*)r   r9  expected_buffer_dtyper   categoryr   r  crZ  |i  zM8[ns]@   ztsn:)r   bcN)r   rf   r  r_  c                 .   [         R                  " SU 05      n[        R                  " SS9   UR	                  5       nS S S 5        WR                  S5      nUR                  U:X  d   eUR                  5       S   S   U:X  d   eg ! , (       d  f       NN= f)Nr   r   r   r   )r"   r%   r&   r'   r(   r)   r*   r   )r   r9  r_  r7   r   r8   s         r:   test_buffer_dtype_categoricalrf    s    N 
vtn	%B		#	#-	8  
9

 
 
(C99&&&??V$Q'+@@@@	 
9	8s   B
Bc                      [         R                  " SS5      n SSS// SQ/0nU R                  U5      n[        U5      n[        R
                  " U5      n[        R                  " X45        g )Nr=   r   r   r   rf   r6  )rG   rH   rI   r   r"   r%   r&   r5   )rL   r   tblrO   rP   s        r:   test_from_dataframe_list_dtyperi    sZ    			Y	1B1a&)$%D
((4.CC F||D!H&+rq   )r   N)Mr   r   numpyrV   rG   pandas._libs.tslibsr   pandas.compatr   r   pandasr"   pandas._testing_testingr&   pandas.core.interchange.columnr   *pandas.core.interchange.dataframe_protocolr	   r
   &pandas.core.interchange.from_dataframer   pandas.core.interchange.utilsr   r  parametrizer;   rQ   filterwarningsrY   r`   floatri   r   r   rJ   r   r   r   r   r   r   r   r   r   r   r
  r  r*  r-  r0  r4  r8  StringDtyperW   utcr$   r,  rR  rU  rX  r\  r^  r4   r+   INTr   INT64r   r$  r%  FLOATFLOAT64r   r   rf  ri  rp   rq   r:   <module>r}     sb  
   $
   7 B 5 "35I!JKF LF2,  J
,
,M$ +	
D3ec*+	
D5<%&	
D3%	
AU5\"#	
Au	
Ae~
M
M$ 
<91>	

MM8D2 
$56/0-.)$+,	
@@@ A:F2 "sBi1
E 2
E	C922 |45F 6F,<..&,E& '	w(	'1	vv&	/	
 	

 
Iy1	.	:	i0	0&9	$bnnbff&E~V	$&7HdAq!8D!Q#7>$	
 dAq!8D!Q#7>$	
 q!HLL9q!HLL9
 5.	
?(+X%
%%,/%	%Y+X%( '	GW%	$g.	FF#	OV,	
 	

 
9i0	-y9	y&1	16:,NNBFF+	

 
*+<nMdAq!8D!Q#7$19MN$	
 dAq!8D!Q#7$19MN$	
 q!HLL9q!HLL9q!HLL9
 5.	
G,/`(
((,/(	(a/`(&	, 7 IIoZ8""AsC0]]AsC(	
 II$1%xa';XdAq=QR VS1]]B 1 137	
 II'(q+"4"4c:^^Q 1 137	
 IIi ]]B 1 137]]B 1 137	
 IIk"__b+"5"5s;__b+"5"5s;	
1 BA
))A)S#s23A !Cc!9:A 
	AC BA,rq   