
    4i_                     2   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
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  \R4                  R7                  S
SS/5      S 5       rS r\R4                  R=                  S5      S 5       rS r \R4                  R7                  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"\R4                  R7                  S
S S S S S /5      S 5       r#S r$\R4                  R7                  S
/ S Q/ S!QS"./ S#Q/ S!QS".\RJ                  " / S$Q5      \RJ                  " / S#Q5      \RJ                  " / S!Q5      S%./5      S& 5       r&S' r'S( r(S) r)S* r*S+ r+\R4                  R7                  S
0 S,/ 0/5      S- 5       r,SxS/ jr-SxS0 jr.S1 r/\R4                  R7                  S2S3S4/5      S5 5       r0S6 r1SxS7 jr2S8 r3S9 r4S: r5S; r6\R4                  R7                  S</ S=QS>S?4/ S=QS@S?4/ S=QSASB4/ S=QSCSB4/ S=QSDSE4/ S=QSFSE4/ SGQSHSI4/ SGQSJSI4/ SKQSLSM4/ SKQSNSM4/ SOQ\Rn                  " \Rp                  SP9SQ4/ SOQSRSQ4\ " SSSS5      \ " SSSS5      S/STSU4\ " SSSS5      \ " SSSS5      S/SVSW4\ " SSSS\Rr                  SX9\ " SSSS\Rr                  SX9S/SYSZ4/5      S
\:S[\;S\\;S.S4S] j5       r<\R4                  R7                  S</ S^QS>S?4/ S^QS@S?4/ S^QSASB4/ S^QSCSB4/ S^QSDSE4/ S^QSFSE4/ S_QSHSI4/ S_QSJSI4/ S`QSLSM4/ S`QSNSM4/ SaQ\Rn                  " \Rp                  SP9SQ4/ SaQSRSQ4\ " SSSS5      \ " SSSS5      \ " SSSSb5      /STSU4\ " SSSS5      \ " SSSS5      \ " SSSSb5      /SVSW4\ " SSSS\Rr                  SX9\ " SSSS\Rr                  SX9\ " SSSSb\Rr                  SX9/SYSZ4/5      S
\:S[\;S\\;S.S4Sc j5       r=SxSd jr>SxSe jr?Sf r@\R4                  R7                  Sg\R                  " / ShQSiSj9\R                  SkSlSm4\R                  SkSlSn44\R                  " \ " SoSS5      \ " SoSS5      \ " SoSSb5      /SpSj9\R                  SqSrSm4\R                  Sq\R                  Sm44\R                  " / SsQ5      \R                  Sk\R                  Sm4\R                  Sk\R                  Sm44\R                  " / S^Q5      \R                  Sq\R                  Sm4\R                  Sq\R                  Sm44\R                  " / StQ5      \R                  Sq\R                  Sm4\R                  Sq\R                  Sm44/5      S
\R                  S\\K\\L\;\;4   Su\K\\L\;\;4   S.S4Sv j5       rMSw rNg)y    )datetimetimezoneN)iNaT)is_ci_environmentis_platform_windows)pa_version_under22p0)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        d/var/www/html/dynamic-report/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@   rA   rB   rC   rD   rE   rF   )r   )pytestimportorskiptablearraydictionary_encoder)   r'   r(   r   r#   r$   r&   r6   )paarrrJ   exchange_dfresultrG   expecteds          r;   test_categorical_pyarrowrR   5   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?   rN   float64r   r   )rH   rI   rJ   rK   rL   r)   r'   r(   r#   apiinterchanger   r&   r$   npnanr6   rM   rN   rJ   rO   rP   rQ   s         r;   test_empty_categorical_pyarrowrZ   E   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@   rA   rG   large_stringr   r   Fr   check_stacklevel)rH   rI   rJ   rK   r)   r'   r(   r   r#   r&   r6   TableequalsrV   rY   s         r;   test_large_string_pyarrowra   U   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
@rX    @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?   )re   Nrf   rN   r   r   Fr]   )rH   rI   rJ   slicer)   r'   r(   r   r#   r&   r6   r_   r`   rV   )	rb   rc   rd   rM   rN   rJ   rO   rP   rQ   s	            r;   test_bitmasks_pyarrowrj   g   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      $ )Nrg   id   rW   randomdefault_rngintegers     r;   <lambda>rs      s     		%%a(11$<rr   c                  `    [         R                  R                  S5      R                  SS5      $ )Nrg   r   rl   rm   rq   rr   r;   rs   rs      s     		%%a(11!S9rr   c                  \    [         R                  R                  S5      R                  5       $ )Nrg   )rW   rn   ro   rq   rr   r;   rs   rs      s    		%%a(//1rr   c                  b    [         R                  R                  S5      R                  SS/5      $ )Nrg   TF)rW   rn   ro   choicerq   rr   r;   rs   rs      s"    		%%a(//u>rr   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$ )Nrg   il  i4  r         )yearmonthday)r   rW   rn   ro   rp   rq   rr   r;   rs   rs      sf    &&q)224>))''*33Ar:		%%a(11!R8
rr   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)
   rz   r9   rg   r   r   r   )r   rg   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_namer6   r2   attrs)r   NCOLSNROWSi_r8   df2indicesnamesrP   rQ   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zrg   r   )lowhighF)sizereplacer   r   r   r   r   )r#   r&   rW   rK   rn   ro   columnsrp   lenitemsindexrw   arangelocr'   r(   r)   r*   r-   )r8   rngr9   	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   rg   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   r8   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)Nrg   Nr   rg   )r   r   Nr   Nr   r   r   rg   )
r#   r&   rW   rK   r'   r(   r)   r   r*   r-   )r8   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      )rW   rX   r#   r&   r'   r(   r)   r*   r   r-   r+   r   STRINGr.   r
   USE_BYTEMASK)string_datatest_str_datar8   r9   	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   rq   r   r   znot supported yet)
r#   r&   r'   r(   r)   r*   rH   raisesNotImplementedErrorr+   r8   r9   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   rg   r   r   )r#   r&   	TimestampNaTr'   r(   r)   r*   r   r-   r+   r   DATETIMEr.   r
   r/   r   r6   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*   rW   from_dlpackget_buffersrK   assert_numpy_array_equal)r8   r9   rP   rQ   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)	rH   rI   pyarrow.interchanger   r#   r&   r'   r(   r6   )r   pa_from_dataframerQ   arrow_dfrP   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   )rg   rg      )r   r   rl   n_legs)r   z@Cannot do zero copy conversion into multi-column DataFrame blockr   F
allow_copy)
rH   rI   chunked_arrayrJ   r   RuntimeErrorr#   rU   rV   r   )rM   r   r   rJ   s       r;   test_multi_chunk_pyarrowr   7  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   rg   NInt64[pyarrow]r   T)ignore_indexr   r   r   z:Found multi-chunk pyarrow array, but `allow_copy` is FalseFr   )r   r   Nr   r   NrT   rg   )rH   rI   r#   r5   concatto_framecopyr'   r(   r   r   rU   rV   r   r)   r&   r6   r   rK   	_pa_arraychunks)serr8   df_origrP   rQ   s        r;   test_multi_chunk_columnr   C  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   )r{   r|   r}   hourminutesecondtimestamp[ns][pyarrow]col0)r+   namer   r   rq   )rH   rI   r#   r5   r   r   r'   r(   r)   rU   rV   r   itemr   )timestamp_argsr8   dfirP   rQ   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(   r6   r   r)   )r   unittz_datar8   s       r;   test_datetimetzdtyper  u  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       (       aS  [        5       (       aD  [        (       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   rg   Asia/KathmandurN   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+   )rH   rI   pyarrow.computecomputer   r   r   markxfailArrowInvalidapplymarkerrK   r   assume_timezonerJ   r)   r'   r(   r   r#   r&   r6   )	requestrM   pcr  rN   rJ   rO   rP   rQ   s	            r;   )test_interchange_from_non_pandas_tz_awarer    s   			Y	1B !2!4!49M9M{{  ??; ! 
 	D!
((HT1a($q!0DE
FC


S"2
3CHHeS\"E%%'K		#	#-	8, 
9 ||I.H
 (F+ 
9	8s   3D88
E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   rq   )bufferss   r;   rs   ?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>  s    rr   c                    > T$ r   rq   )r   columns    r;   rs   r!    s    vrr   r)   c                    > T$ r   rq   )r   rV   s    r;   rs   r!    s    rr   )r'   r(   r#   r&   r)   r*   r   r   UINTr   UINT8setattrrU   rV   r   )monkeypatchr8   buffers_databuffer_dtyper   r#  rV   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)   rU   rV   r   r6   )r8   r   rP   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-  )rH   rI   r#   r&   r'   r(   rU   rV   r   r)   r6   )r8   rP   rQ   s      r;   test_large_stringr1    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   rg   r  r   )r   r   r   0)r#   r5   r   r'   r(   r)   r   )r8   r   s     r;   test_non_str_namesr5    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)	Nr3  r   r   r   )r4  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)   rH   r   	TypeErrorrU   rV   r   )r8   r   s     r;   test_non_str_names_w_duplicatesr9    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+   r:  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   rI  usr  r   r   r   r   r   rg   rH   rI   r   rV   	timestampr#   r&   r'   r(   r   r)   typeas_pyr   r+   r:  rM   pair8   rP   s          r;   (test_pandas_nullable_with_missing_valuesrS    s    b 
		Y	1B%;;d,<=	sDk	/B		#	#-	8##B$4$4$67< 
9;;.(((!9??Q'''!9??Q'''!9??$$$ 
9	8s   !#C--
C;r3  )r   r@  g      @)TFF)rE  rF  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rK  rM  rQ  s          r;   +test_pandas_nullable_without_missing_valuesrV  $  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   r0  r   r   r   validity)	rH   rI   r#   r&   r'   r(   r)   r*   r   )r8   rP   s     r;   test_string_validity_bufferrY  g  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   r0  r   r   r   rX  r   =)rH   rI   r#   r&   r'   r(   r)   r*   r   r   BOOLr   )r8   rX  rP   rQ   s       r;   &test_string_validity_buffer_no_missingr]  p  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)   rU   rV   r   r6   )r8   r   rP   rQ   s       r;   test_empty_dataframer_  |  s    	sBiv	.B		#	#-	8 ##22352I 
9 ||S"IV4H&(+	 
9	8s   9B
B*)r   r:  expected_buffer_dtyper   categoryr   r  cr[  |i  zM8[ns]@   ztsn:)r   bcN)r   rg   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   r:  r`  r8   r   r9   s         r;   test_buffer_dtype_categoricalrg    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   rg   r7  )rH   rI   rJ   r   r#   r&   r'   r6   )rM   r   tblrP   rQ   s        r;   test_from_dataframe_list_dtyperj    sZ    			Y	1B1a&)$%D
((4.CC F||D!H&+rr   )r   N)Or   r   numpyrW   rH   pandas._libs.tslibsr   pandas.compatr   r   pandas.compat.pyarrowr   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<   rR   filterwarningsrZ   ra   floatrj   r   r   rK   r   r   r   r   r   r   r   r   r   r   r  r  r+  r.  r1  r5  r9  StringDtyperX   utcr%   r-  rS  rV  rY  r]  r_  r5   r,   INTr   INT64r   r%  r&  FLOATFLOAT64r   r   rg  rj  rq   rr   r;   <module>r     se  
   $ 7   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,rr   