
    @i_                     
   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
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,dxd/Z-dxd0Z.d1 Z/ej                            d2d3d4g          d5             Z0d6 Z1dxd7Z2d8 Z3d9 Z4d: Z5d; Z6ej                            d<g d=d>d?fg d=d@d?fg d=dAdBfg d=dCdBfg d=dDdEfg d=dFdEfg dGdHdIfg dGdJdIfg dKdLdMfg dKdNdMfg dO ej7        ej8        P          dQfg dOdRdQf e dSdd           e dSdd          dgdTdUf e dSdd           e dSdd          dgdVdWf e dSddej9        X           e dSddej9        X          dgdYdZfg          d
e:d[e;d\e;d.dfd]            Z<ej                            d<g d^d>d?fg d^d@d?fg d^dAdBfg d^dCdBfg d^dDdEfg d^dFdEfg d_dHdIfg d_dJdIfg d`dLdMfg d`dNdMfg da ej7        ej8        P          dQfg dadRdQf e dSdd           e dSdd           e dSddb          gdTdUf e dSdd           e dSdd           e dSddb          gdVdWf e dSddej9        X           e dSddej9        X           e dSddbej9        X          gdYdZfg          d
e:d[e;d\e;d.dfdc            Z=dxddZ>dxdeZ?df Z@ej                            dg ejA        g dhdij          ejB        dkdldmfejC        dkdldnff ejA         e dodd           e dodd           e doddb          gdpj          ejD        dqdrdmfejC        dqejE        dmff ejA        g ds          ejF        dkejF        dmfejG        dkejH        dmff ejA        g d^          ejC        dqejE        dmfejC        dqejE        dmff ejA        g dt          ejI        dqejJ        dmfejI        dqejJ        dmffg          d
ejA        d\eKeeLe;e;f         dueKeeLe;e;f         d.dfdv            ZMdw ZNdS )y    )datetimetimezoneN)iNaT)is_ci_environmentis_platform_windows)pa_version_under22p0)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        C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\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@   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	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?   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	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@   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	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
@rX    @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?   )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	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 )Nrg   id   rW   randomdefault_rngintegers     r;   <lambda>rs      s&    	%%a((11$<< rr   c                  h    t           j                            d                              dd          S )Nrg   r   rl   rm   rq   rr   r;   rs   rs      s&    	%%a((11!S99 rr   c                  d    t           j                            d                                          S )Nrg   )rW   rn   ro   rq   rr   r;   rs   rs      s"    	%%a((//11 rr   c                  j    t           j                            d                              ddg          S )Nrg   TF)rW   rn   ro   choicerq   rr   r;   rs   rs      s(    	%%a((//u>> rr   c                  L   t          t          j                            d                              dd          t          j                            d                              dd          t          j                            d                              dd                    S )Nrg   il  i4  r         )yearmonthday)r   rW   rn   ro   rp   rq   rr   r;   rs   rs      s~    &&q))224>>)''**33Ar::	%%a((11!R88
 
 
 rr   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)
   rz   c                     i | ]:}d t          |dz  z
  z  dz              fdt                    D             ;S )r9   rg   r   c                 $    g | ]}             S rq   rq   ).0_r   s     r;   
<listcomp>z-test_dataframe.<locals>.<dictcomp>.<listcomp>   s    2P2P2Pa44662P2P2Prr   )intrange)r   iNCOLSNROWSr   s     r;   
<dictcomp>z"test_dataframe.<locals>.<dictcomp>   sh        	1c1uqy=E)A-..002P2P2P2P5<<2P2P2P  rr   r   r   )r   rg   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(<<<<<<rr   _INTERCHANGE_PROTOCOL_BUFFERS)r   r#   r&   r'   r(   r)   num_columnsnum_rowsr%   column_namesr   tupler   select_columnsselect_columns_by_namer6   r2   attrs)	r   r8   df2indicesnamesrP   rQ   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zrg   c           	      Z    i | ]'}|                     d t                              (S )r   )lowhigh)rp   len)r   r9   r8   rngs     r;   r   z,test_missing_from_masked.<locals>.<dictcomp>   s1    NNNCcllqs2wwl77NNNrr   F)sizereplacer   r   r   r   r   )r#   r&   rW   rK   rn   ro   columnsitemsindexrw   aranger   locr'   r(   r)   r*   r-   )	dict_nullr9   	num_nullsnull_idxr   r8   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   rg   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   r8   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)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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      )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<   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   rq   r   r   znot supported yet)
r#   r&   r'   r(   r)   r*   rH   raisesNotImplementedErrorr+   r8   r9   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   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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*   rW   from_dlpackget_buffersrK   assert_numpy_array_equal)r8   r9   rP   rQ   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)	rH   rI   pyarrow.interchanger   r#   r&   r'   r(   r6   )r   pa_from_dataframerQ   arrow_dfrP   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   )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	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   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,,,
)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   )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  \  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(   r6   r   r)   )r  unittz_datar8   s       r;   test_datetimetzdtyper  u  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	                      rPt                      rBt          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   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	1	1B       "!2!4!4 "9M "{  ?; ! 
 
 	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   rq   )bufferss   r;   rs   z?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>  s     rr   c                     S r   rq   )r   columns    r;   rs   z?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>  s    v rr   r)   c                     S r   rq   )r   rV   s    r;   rs   z?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>  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	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)   rU   rV   r   r6   )r8   r   rP   s      r;   test_empty_string_columnr1    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]   r0  )rH   rI   r#   r&   r'   r(   rU   rV   r   r)   r6   )r8   rP   rQ   s      r;   test_large_stringr4    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   rg   r"  r   )r   r   r   0)r#   r5   r   r'   r(   r)   r   )r8   r   s     r;   test_non_str_namesr8    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 )	Nr6  r   r   r   )r7  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_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   rL  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_valuesrV    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#r6  )r   rC  g      @)TFF)rH  rI  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 rN  rP  rT  s          r;   +test_pandas_nullable_without_missing_valuesrZ  $  sp   h 
	Y	1	1B%%%%%%;;;d,<==	sDk	/	/	/B		#-	8	8	8 = =##B$4$4$6$677<= = = = = = = = = = = = = = =;.((((!9??Q''''!9??Q''''!9??Q''''''rW  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   r3  r   r   r   validity)	rH   rI   r#   r&   r'   r(   r)   r*   r   )r8   rP   s     r;   test_string_validity_bufferr]  g  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   r3  r   r   r   r\  r   =)rH   rI   r#   r&   r'   r(   r)   r*   r   r   BOOLr   )r8   r\  rP   rQ   s       r;   &test_string_validity_buffer_no_missingra  p  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)   rU   rV   r   r6   )r8   r  rP   rQ   s       r;   test_empty_dataframerc  |  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   rg   r"  rd  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=  rd  r8   r  r9   s         r;   test_buffer_dtype_categoricalrk    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   rg   r:  )rH   rI   rJ   r   r#   r&   r'   r6   )rM   r   tblrP   rQ   s        r;   test_from_dataframe_list_dtypern    so    		Y	1	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.  r1  r4  r8  r<  StringDtyperX   utcr%   r0  rV  rZ  r]  ra  rc  r5   r,   INTr   INT64r   r(  r)  FLOATFLOAT64r   r   rk  rn  rq   rr   r;   <module>r     s         
      $ $ $ $ $ $        7 6 6 6 6 6           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, , , , ,rr   