
    Pi_                     
   d dl m Z mZ d dlZd dlZd dlmZ d dlmZm	Z	 d dl
Zd dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ ej                            d	d
dg          d             Zd Zej                            d          d             Zd Zej                            dd dd ed          dgfdd ed          dgfdddgfd dd ed          gfd ddgfdd ed          gfg          d             Z ej                            d	d d d d d g          d             Z!d Z"ej                            d	g dg d d!g d"g d d! ej#        g d#           ej#        g d"           ej#        g d           d$g          d%             Z$d& Z%d' Z&d( Z'd) Z(d* Z)ej                            d	i d+g ig          d,             Z*dwd.Z+dwd/Z,d0 Z-ej                            d1d2d3g          d4             Z.d5 Z/dwd6Z0d7 Z1d8 Z2d9 Z3d: Z4ej                            d;g d<d=d>fg d<d?d>fg d<d@dAfg d<dBdAfg d<dCdDfg d<dEdDfg dFdGdHfg dFdIdHfg dJdKdLfg dJdMdLfg dN ej5        ej6        O          dPfg dNdQdPf e dRdd           e dRdd          dgdSdTf e dRdd           e dRdd          dgdUdVf e dRddej7        W           e dRddej7        W          dgdXdYfg          d	e8dZe9d[e9d-dfd\            Z:ej                            d;g d]d=d>fg d]d?d>fg d]d@dAfg d]dBdAfg d]dCdDfg d]dEdDfg d^dGdHfg d^dIdHfg d_dKdLfg d_dMdLfg d` ej5        ej6        O          dPfg d`dQdPf e dRdd           e dRdd           e dRdda          gdSdTf e dRdd           e dRdd           e dRdda          gdUdVf e dRddej7        W           e dRddej7        W           e dRddaej7        W          gdXdYfg          d	e8dZe9d[e9d-dfdb            Z;dwdcZ<dwddZ=de Z>ej                            df ej?        g dgdhi          ej@        djdkdlfejA        djdkdmff ej?         e dndd           e dndd           e dndda          gdoi          ejB        dpdqdlfejA        dpejC        dlff ej?        g dr          ejD        djejD        dlfejE        djejF        dlff ej?        g d]          ejA        dpejC        dlfejA        dpejC        dlff ej?        g ds          ejG        dpejH        dlfejG        dpejH        dlffg          d	ej?        d[eIeeJe9e9f         dteIeeJe9e9f         d-dfdu            ZKdv ZLdS )x    )datetimetimezoneN)iNaT)is_ci_environmentis_platform_windows)PandasColumn)ColumnNullType	DtypeKindfrom_dataframe)ArrowCTypesdata)orderedT)	unorderedFc                    t          j        t          d          dz  d          t          j        t          d          dz  d          d}t          j        d|| d                  i          }t	          j        d	
          5  |                                                    d          }d d d            n# 1 swxY w Y   |j        d         t          j
        k    sJ |j        dk    sJ |j        t          j        dfk    sJ |                                dk    sJ |j        }|d         | d         k    sJ |d         du sJ t#          |d         t$                    sJ t	          j        |d         j        t          j        g d                     t	          j        d	
          5  t	          j        |t/          |                                                     d d d            d S # 1 swxY w Y   d S )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        v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/interchange/test_impl.pytest_categorical_dtyper;      s    >$z"2"2R"7FFF^D$4$4r$95III  
s-d1g68	9	9B		#-	8	8	8 9 9  33C889 9 9 9 9 9 9 9 9 9 9 9 9 9 99Q<900000>Q!<b AAAAA>>q    'HL!T!W,,,,O$,,,,h|,l;;;;;#RY/H/H/H%I%I   
	#-	8	8	8 F F
b.1A1A1C1C"D"DEEEF F F F F F F F F F F F F F F F F Fs$   (B99B= B=.5G00G47G4c                     t          j        dd          } g d}|                     d|                     |                                          i          }|                                }t          j        d          5  t          |          }d d d            n# 1 swxY w Y   t          j
        |g d          }t          j        d|i          }t          j        ||           d S )	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	1	1B
I
I
ICHHi#!@!@!B!BCDDE%%''K		#-	8	8	8 - -,,- - - - - - - - - - - - - - -nIII  G |Y011H&(+++++s   ?BB"BzDignore:Constructing a Categorical with a dtype and values containingc                  
   t          j        dd          } d g}|                     d|                     |d                                          i          }|                                }t          j        d          5  t          j	        j
                            |          }d d d            n# 1 swxY w Y   t          j        dt          j        t          j        g          i          }t          j        ||           d S )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	1	1B&CHHeRXXc955GGIIJKKE%%''K		#-	8	8	8 @ @#22;??@ @ @ @ @ @ @ @ @ @ @ @ @ @ @|UBNBF8$<$<=>>H&(+++++s   ?%B00B47B4c                  R   t          j        dd          } ddg}|                     d|                     |d          i          }|                                }t          j        d          5  t          |          }d d d            n# 1 swxY w Y   t          j	        dddgi          }t          j
        ||           t          j        dd	
          5  | j                            | j                            |          |          sJ 	 d d d            d S # 1 swxY w Y   d S )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	1	1B%.CHHi#~!>!>?@@E%%''K		#-	8	8	8 - -,,- - - - - - - - - - - - - - -|Y788H&(+++ 
	#-%	P	P	P M Mxr~<<VDDeLLLLLLM M M M M M M M M M M M M M M M M Ms$   .B

BB6DD #D )offsetlengthexpected_valuesffffff
@rW    @r      c                 N   t          j        dd          }g d}|                    d|i                              | |          }|                                }t          j        d          5  t          |          }d d d            n# 1 swxY w Y   t          j	        d|i          }t          j
        ||           t          j        dd          5  |j                            |j                            |          |          sJ 	 d d d            d S # 1 swxY w Y   d S )	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	1	1B


CHHeS\""((88E%%''K		#-	8	8	8 - -,,- - - - - - - - - - - - - - -|UO455H&(+++ 
	#-%	P	P	P M Mxr~<<VDDeLLLLLLM M M M M M M M M M M M M M M M M Ms$   .B

BB6DD!Dc                  h    t           j                            d                              dd          S )Nrf   id   rV   randomdefault_rngintegers     r:   <lambda>rr      s&    	%%a((11$<< rq   c                  h    t           j                            d                              dd          S )Nrf   r   rk   rl   rp   rq   r:   rr   rr      s&    	%%a((11!S99 rq   c                  d    t           j                            d                                          S )Nrf   )rV   rm   rn   rp   rq   r:   rr   rr      s"    	%%a((//11 rq   c                  j    t           j                            d                              ddg          S )Nrf   TF)rV   rm   rn   choicerp   rq   r:   rr   rr      s(    	%%a((//u>> rq   c                  L   t          t          j                            d                              dd          t          j                            d                              dd          t          j                            d                              dd                    S )Nrf   il  i4  r         )yearmonthday)r   rV   rm   rn   ro   rp   rq   r:   rr   rr      s~    &&q))224>>)''**33Ar::	%%a((11!R88
 
 
 rq   c                     d\   fdt                    D              t          j                   }t          j        d          5  |                                }d d d            n# 1 swxY w Y   |                                k    sJ |                                k    sJ t          |	                                          t           
                                          k    sJ d}t           fd|D                       }t          j        d          5  t          |                    |                    }t          |                    |                    }d d d            n# 1 swxY w Y   t          j        ||           t!          |j        d         t                    sJ t!          |j        d         t                    sJ d S )N)
   ry   c                     i | ]:}d t          |dz  z
  z  dz              fdt                    D             ;S )r8   rf   r   c                 $    g | ]}             S rp   rp   ).0_r   s     r:   
<listcomp>z-test_dataframe.<locals>.<dictcomp>.<listcomp>   s    2P2P2Pa44662P2P2Prq   )intrange)r   iNCOLSNROWSr   s     r:   
<dictcomp>z"test_dataframe.<locals>.<dictcomp>   sh        	1c1uqy=E)A-..002P2P2P2P5<<2P2P2P  rq   r   r   )r   rf   c              3   f   K   | ]+}t                                                    |         V  ,d S N)r$   keys)r   idxr   s     r:   	<genexpr>z!test_dataframe.<locals>.<genexpr>   s8      <<S$tyy{{##C(<<<<<<rq   _INTERCHANGE_PROTOCOL_BUFFERS)r   r"   r%   r&   r'   r(   num_columnsnum_rowsr$   column_namesr   tupler   select_columnsselect_columns_by_namer5   r1   attrs)	r   r7   df2indicesnamesrO   rP   r   r   s	   `      @@r:   test_dataframer      sl    LE5     u  D 
d		B		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ??%%%%<<>>U""""  ""##tDIIKK'8'88888G<<<<G<<<<<E		#-	8	8	8 E E 2 27 ; ;<<!#"<"<U"C"CDDE E E E E E E E E E E E E E E &(+++fl#BCTJJJJJhn%DEtLLLLLLLs%   A00A47A4'AE88E<?E<c            	      N   t          j        t          j        g d          t          j        g d          t          j        g d          d          t          j                            d          fdj        D             } |                                 D ]S\  }}j        	                    t          j
        t                              |d                   }d j        ||f<   Tt          j        d	
          5                                  }d d d            n# 1 swxY w Y   |                    d          j        | d         k    sJ |                    d          j        | d         k    sJ |                    d          j        | d         k    sJ d S )N)      ?       @g      @g      @        )      ?      @      @g      @r   )r   r   r   r   r   xyzrf   c           	      Z    i | ]'}|                     d t                              (S )r   )lowhigh)ro   len)r   r8   r7   rngs     r:   r   z,test_missing_from_masked.<locals>.<dictcomp>   s1    NNNCcllqs2wwl77NNNrq   F)sizereplacer   r   r   r   r   )r"   r%   rV   rJ   rm   rn   columnsitemsindexrv   aranger   locr&   r'   r(   r)   r,   )	dict_nullr8   	num_nullsnull_idxr   r7   r   s        @@r:   test_missing_from_maskedr      s   	333441112233344	
 	

 
B )


"
"CNNNNN2:NNNI#//++ % %Y8JJryR))	5JII
 !%x}		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!#&&1Ys^CCCC!!#&&1Ys^CCCC!!#&&1Ys^CCCCCCs   D((D,/D,)r   r   r   )ffffff"@      %@皙'@)r   r   )r   rf   r   )TTFr   c                    t          j        |           }t          j        d          5  |                                }d d d            n# 1 swxY w Y   |j        D ]"}|                    |          j        dk    sJ #d S )Nr   r   r   )r"   r%   r&   r'   r(   r   r)   r,   )r   r7   r   col_names       r:   test_mixed_datar      s     
d		B		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! J @ @%%h//:a?????@ @s   AAAc                     t          j        t          j        g d          t          j        g d          t          j        g d          d          } t	          j        d          5  |                                 }d d d            n# 1 swxY w Y   | j        D ]"}|                    |          j	        dk    sJ #d S )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99::///0077788	
 	

 
B 
	#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! J @ @%%h//:a?????@ @s   *BBBc                  H   dddddt           j        gi} | d         dgz   }t          j        d|i          }t	          j        d	          5  |                                                    d          }d d d            n# 1 swxY w Y   |                                d
k    sJ |j	        dk    sJ |j
        d         t          j        k    sJ |j        t          j        dfk    sJ |dd          }t	          j        d	          5  |                                                    d          }d d d            n# 1 swxY w Y   |                                dk    sJ |j	        dk    sJ |j
        d         t          j        k    sJ |j        t          j        dfk    sJ d S )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<   F
K   01RD8M	sM*	+	+B		#-	8	8	8 9 9  33C889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 88::????>Q9Q<9+++++!<a @@@@@122I		#-	8	8	8 @ @%%''::3??@ @ @ @ @ @ @ @ @ @ @ @ @ @ @88::????>Q9Q<9+++++!<a @@@@@@@s$   (A??BB(D::D>D>c                  T   t          j        dg di          } t          j        d          5  |                                                     d          }d d d            n# 1 swxY w Y   t          j        t          d          5  |j	         d d d            d S # 1 swxY w Y   d S )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     s'   	s.../	0	0B		#-	8	8	8 9 9  33C889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	*2E	F	F	F  		                 s#   (A""A&)A&BB!$B!c                     t          j        dt          j        d          t           j        gi          } t	          j        d          5  |                                                     d          }d d d            n# 1 swxY w Y   |                                dk    sJ |j	        dk    sJ |j
        d         t          j        k    sJ |j        t          j        t           fk    sJ t	          j        d          5  t	          j        | t%          |                                                      d d d            d S # 1 swxY w Y   d S )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7@A	B	BB		#-	8	8	8 9 9  33C889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 88::????>Q9Q<9-----!<d CCCCC		#-	8	8	8 F F
b.1A1A1C1C"D"DEEEF F F F F F F F F F F F F F F F F Fs$   
(A>>BB 5EE	Ec                     t          j        dt          j        g d          i          } t          j        d          5  |                                                     d          }d d d            n# 1 swxY w Y   t          j        |	                                d         d                   }t          j
        g dd	          }t          j        ||           d S )
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    	sBN???;;<	=	=B		#-	8	8	8 9 9  33C889 9 9 9 9 9 9 9 9 9 9 9 9 9 9^COO--f5a899Fx			000H11111s    (A44A8;A8r   c                 "   t          j        dd           ddlm} t	          j        |           }t          j        dd          5   ||          }d d d            n# 1 swxY w Y   t          |          }t          j        ||d           d S )	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   (  s     	8,,,GGGGGG|D!!H		#-%	P	P	P / /$$X../ / / / / / / / / / / / / / /H%%F&(eDDDDDDs   AA"%A"returnc                  P   t          j        dd          } |                     g dg dg          }dg}|                     |g|          }t          j        t
          d          5  t          j        j        	                    |d	
           d d d            d S # 1 swxY w Y   d S )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	1	1Byyy+++677FJEHHfXUH++E	P
 
 
 C C 	))%E)BBB	C C C C C C C C C C C C C C C C C Cs   ''BB"Bc                     t          j        dd           t          j        g dd          } t          j        | | gd                              d          }|                                }t          j        d	
          5  t          j	        t          d
          5  t          j        j                            |                    d                     d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        d	
          5  t          j        j                            |                    d                    }d d d            n# 1 swxY w Y   t          j        dg did          }t          j        ||           t          j        ||           t#          |d         j        j        j                  dk    sJ t#          |d         j        j        j                  dk    sJ d S )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,,,
)LLL(8
9
9
9C	C:D	1	1	1	:	:3	?	?BggiiG		#-	8	8	8 R R]N
 
 
 	R 	R F--b.>.>%.>.P.PQQQ		R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	RR R R R R R R R R R R R R R R 
	#-	8	8	8 V V#2223C3Ct3C3T3TUUV V V V V V V V V V V V V V V |S"B"B"BC9UUUH&(+++ "g&&&r#w}&-..!3333ws|!+233q888888sH   C:9C#C:#C'	'C:*C'	+C::C>C>9EE#&E#c                     t          j        dd           ddddddd} t          j        t	          di | gdd                                          }t          j        d	
          5  |                                }t          j	        j
                            |          d                                         }d d d            n# 1 swxY w Y   t          j        di | }||k    sJ d S )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  [  sW   
	8,,, N 
		#	#N	#	#$&
 
 
 hjj	  
	#-	8	8	8 G G  #22377?DDFFG G G G G G G G G G G G G G G |--n--HXs   (ACC	C	tzUTCz
US/Pacificc                 p   t          j        ddd                              |                               |          }t          j        d|i          }t          j        d          5  t          j        |t          |	                                                     d d d            d S # 1 swxY w Y   d S )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88DDRHHPPQUVV  
w(	)	)B		#-	8	8	8 F F
b.1A1A1C1C"D"DEEEF F F F F F F F F F F F F F F F F Fs   )5B++B/2B/c           	         t          j        dd          }dd lm} t	                      rIt                      r;t           j                            |j        d          }| 	                    |           |
                    t          ddd          d t          ddd          g          }|                    |d	          }|                    d
|i          }|                                }t          j        d          5  t#          |          }d d d            n# 1 swxY w Y   t%          j        g dd
gd          }t          j        ||           d S )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	1	1B       "!2!4!4 "{  ?; ! 
 
 	D!!!
((HT1a(($q!0D0DE
F
FC


S"2
3
3CHHeS\""E%%''K		#-	8	8	8 - -,,- - - - - - - - - - - - - - - |III.  H
 (F+++++s   ?DD"Dc                    t          j        d          5  t          j        dddgi                                          }|                                d d d            n# 1 swxY w Y                       d                                          d         }|d         }t          j        dt          j
        |d	         f}|d
         |fd<   fd_        fd_        |                     |dfd           t          j        d          5  t          j        j                            |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   foobarr   r         r   c                       S r   rp   )bufferss   r:   rr   z?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>  s     rq   c                     S r   rp   )r   columns    r:   rr   z?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>  s    v rq   r(   c                     S r   rp   )r   rU   s    r:   rr   z?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>  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	8	8 ) )\3/00>>@@&&(() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ++C00F  ""G6?L?L	Q	L $A5GFO(F%5%5%5%5K"O-K-K-K-KLLL		#-	8	8	8 . .
))"---. . . . . . . . . . . . . . . . . .s#   ?A$$A(+A(%E

EEc                  4   t          j        dg it                    } t          j        d          5  |                                 }t           j        j                            |          }d d d            n# 1 swxY w Y   t          j	        | |           d S )Nr   r   r   r   )
r"   r%   strr&   r'   r(   rT   rU   r   r5   )r7   r   rO   s      r:   test_empty_string_columnr0    s    	sBis	+	+	+B		#-	8	8	8 8 8  #223778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 "f%%%%%s   9A88A<?A<c                     t          j        d           t          j        ddgid          } t	          j        dd          5  t          j        j                            | 	                                          }d d d            n# 1 swxY w Y   t          j        ddgid	          }t	          j
        ||           d S )
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_stringr3    s   
	"""	sSEl*A	B	B	BB		#-%	P	P	P G G#2223C3C3E3EFFG G G G G G G G G G G G G G G|S3%L666H&(+++++s   7BBBc                     t          j        g dd                                          } t          j        d          5  |                                                                 }d d d            n# 1 swxY w Y   |dgk    sJ d S )Nr   rf   r!  r   )r   r   r   0)r"   r4   r   r&   r'   r(   r   )r7   r   s     r:   test_non_str_namesr7    s    	9991	%	%	%	.	.	0	0B		#-	8	8	8 2 2  ""//112 2 2 2 2 2 2 2 2 2 2 2 2 2 2SE>>>>>>s    'A33A7:A7c                     t          j        g dg dd          } t          j        d          5  |                                 }d d d            n# 1 swxY w Y   t          j        d          5  t          j        t          d          5  t           j        j	        
                    |d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr5  r   r   r   )r6  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_duplicatesr;    s   	III)))44	5	5B		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !		#-	8	8	8 E E](	
 	
 	
 
	E 
	E F--ce-DDD
	E 
	E 
	E 
	E 
	E 
	E 
	E 
	E 
	E 
	E 
	E 
	E 
	E 
	E 
	EE E E E E E E E E E E E E E E E E EsG   AAA2C'C5CC	C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                 B   t          j        dd          }dd lm} |dk    r|                    dd          }t          j        d| i|          }t          j        d	
          5  |	                    |
                                          d         }d d d            n# 1 swxY w Y   |j        |k    sJ |d                                         | d         k    sJ |d                                         | d         k    sJ |d                                         J d S Nr=   r   r   rK  usr  r   r   r   r   r   rf   rG   rH   r   rU   	timestampr"   r%   r&   r'   r   r(   typeas_pyr   r*   r<  rL   pair7   rO   s          r:   (test_pandas_nullable_with_missing_valuesrU    sg   b 
	Y	1	1B%%%%%%;;;d,<==	sDk	/	/	/B		#-	8	8	8 = =##B$4$4$6$677<= = = = = = = = = = = = = = =;.((((!9??Q''''!9??Q''''!9??$$$$$   %.BB#&B#r5  )r   rB  g      @)TFF)rG  rH  nothingr!  c                 V   t          j        dd          }dd lm} |dk    r|                    dd          }t          j        d| i|          }t          j        d	
          5  |	                    |
                                          d         }d d d            n# 1 swxY w Y   |j        |k    sJ |d                                         | d         k    sJ |d                                         | d         k    sJ |d                                         | d         k    sJ d S rM  rO  rS  s          r:   +test_pandas_nullable_without_missing_valuesrY  #  sp   h 
	Y	1	1B%%%%%%;;;d,<==	sDk	/	/	/B		#-	8	8	8 = =##B$4$4$6$677<= = = = = = = = = = = = = = =;.((((!9??Q''''!9??Q''''!9??Q''''''rV  c                  B   t          j        dd           t          j        ddgid          } t	          j        d          5  |                                                     d                                          d	         }d d d            n# 1 swxY w Y   |J d S )
Nr=   r>   r   r   r2  r   r   r   validity)	rG   rH   r"   r%   r&   r'   r(   r)   r   )r7   rO   s     r:   test_string_validity_bufferr\  f  s    
	8,,,	sSEl*A	B	B	BB		#-	8	8	8 V V!!##66s;;GGII*UV V V V V V V V V V V V V V V>>>>>s   A BBBc                     t          j        dd           t          j        ddd gid          } t	          j        d          5  |                                                     d                                          d	         }d d d            n# 1 swxY w Y   |J |d
         }t          j
        d
t          j
        df}||k    sJ d S )Nr=   r>   r   r   r2  r   r   r   r[  r   =)rG   rH   r"   r%   r&   r'   r(   r)   r   r
   BOOLr   )r7   r[  rO   rP   s       r:   &test_string_validity_buffer_no_missingr`  o  s   
	8,,,	sS$K(0G	H	H	HB		#-	8	8	8 X X##%%88==IIKKJWX X X X X X X X X X X X X X Xa[F;#3S9HXs   A BBBc                  ^   t          j        dg id          } t          j        d          5  |                                 }t           j        j                            |d          }d d d            n# 1 swxY w Y   t          j        dg id          }t          j        ||           d S )Nr   r   r   r   r   Fr   )	r"   r%   r&   r'   r(   rT   rU   r   r5   )r7   r   rO   rP   s       r:   test_empty_dataframerb  {  s    	sBiv	.	.	.B		#-	8	8	8 J J  #22352IIJ J J J J J J J J J J J J J J |S"IV444H&(+++++s   ;A55A9<A9)r   r<  expected_buffer_dtyper   categoryr   r   cr^  |i  zM8[ns]@   ztsn:)r   bcN)r   rf   r!  rc  c                 D   t          j        d| i          }t          j        d          5  |                                }d d d            n# 1 swxY w Y   |                    d          }|j        |k    sJ |                                d         d         |k    sJ d S )Nr   r   r   r   )r"   r%   r&   r'   r(   r)   r*   r   )r   r<  rc  r7   r   r8   s         r:   test_buffer_dtype_categoricalrj    s    N 
vtn	%	%B		#-	8	8	8 ! !  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !

 
 
(
(C9&&&&??V$Q'+@@@@@@@s   AAAc                      t          j        dd          } dddgg dgi}|                     |          }t          |          }t	          j        |          }t          j        ||           d S )Nr=   r   r   r   rf   r9  )rG   rH   rI   r   r"   r%   r&   r5   )rL   r   tblrO   rP   s        r:   test_from_dataframe_list_dtyperm    so    		Y	1	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-  r0  r3  r7  r;  StringDtyperW   utcr$   r/  rU  rY  r\  r`  rb  r4   r+   INTr   INT64r   r'  r(  FLOATFLOAT64r   r   rj  rm  rp   rq   r:   <module>r     s
         
      $ $ $ $ $ $       
           7 7 7 7 7 7        B A A A A A 5 5 5 5 5 5 "35I!JKKF F LKF2, , ,  J 
, 
, 
,M M M$ +	
D3ec*+	
D55<<%&	
D3%	
AUU5\\"#	
Au	
Ae~
 
M M
 
M$ 
<<9911>>	
 	

 M M M8D D D2 
oo$5$5$566ii///00---..)))$$+++,,	
 	
 @ @ @@ @ @ A A A:  F F F2 2 2 "sBi11
E 
E 21
E	C 	C 	C 	C9 9 9 92  2 |455F F 65F, , ,<. . . ..& & &, , ,  E E E& '	w(	'1	vv&	/LL	
 LL	

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

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

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