
    _ei_                     L   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j0                  j3                  d	d
dg      d        Zd Zej0                  j9                  d      d        Zd Zej0                  j3                  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j0                  j3                  d	d d d d d g      d        Z!d Z"ej0                  j3                  d	g dg d d!g d"g d d! ejF                  g d#       ejF                  g d"       ejF                  g d       d$g      d%        Z$d& Z%d' Z&d( Z'd) Z(d* Z)ej0                  j3                  d	i d+g ig      d,        Z*dwd.Z+dwd/Z,d0 Z-ej0                  j3                  d1d2d3g      d4        Z.d5 Z/dwd6Z0d7 Z1d8 Z2d9 Z3d: Z4ej0                  j3                  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jj                  ejl                  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jn                  W       e dRddejn                  W      dgdXdYfg      d	e8dZe9d[e9d-dfd\       Z:ej0                  j3                  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jj                  ejl                  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jn                  W       e dRddejn                  W       e dRddaejn                  W      gdXdYfg      d	e8dZe9d[e9d-dfdb       Z;dwdcZ<dwddZ=de Z>ej0                  j3                  df ej~                  g dgdhi      ej                  djdkdlfej                  djdkdmff ej~                   e dndd       e dndd       e dndda      gdoi      ej                  dpdqdlfej                  dpej                  dlff ej~                  g dr      ej                  djej                  dlfej                  djej                  dlff ej~                  g d]      ej                  dpej                  dlfej                  dpej                  dlff ej~                  g ds      ej                  dpej                  dlfej                  dpej                  dlffg      d	ej~                  d[eIeeJe9e9f   dteIeeJe9e9f   d-dfdu       ZKdv ZLy)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  |j                         j                  d      }d d d        j                  d   t        j                  k(  sJ |j                  dk(  sJ |j                  t        j                  dfk(  sJ |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/        |j                                      d d d        y # 1 sw Y   /xY w# 1 sw Y   y xY w)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        X/var/www/ceduoda/envi/lib/python3.12/site-packages/pandas/tests/interchange/test_impl.pytest_categorical_dtyper;      s    >>$z"2R"7F^^D$4r$95I 
s-d1g68	9B		#	#-	8 9 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 F
b.1A1A1C"DEF F9 9F Fs   ; G.GGGc                     t        j                  dd      } g d}| j                  d| j                  |      j	                         i      }|j                         }t        j                  d      5  t        |      }d d d        t        j                  |g d      }t        j                  d|i      }t        j                  |       y # 1 sw Y   PxY w)	Npyarrow11.0.0)	MonTuer?   Wedr?   ThuFriSatSunweekdayr   r   )r?   r@   rA   rB   rC   rD   rE   )r   )pytestimportorskiptablearraydictionary_encoder(   r&   r'   r   r"   r#   r%   r5   )paarrrI   exchange_dfresultrF   expecteds          r:   test_categorical_pyarrowrQ   4   s    			Y	1B
ICHHi#!@!@!BCDE%%'K		#	#-	8 -,-nnIG ||Y01H&(+- -s   1CCzDignore:Constructing a Categorical with a dtype and values containingc                     t        j                  dd      } d g}| j                  d| j                  |d      j	                         i      }|j                         }t        j                  d      5  t        j                  j                  j                  |      }d d d        t        j                  dt        j                  t        j                  g      i      }t        j                   |       y # 1 sw Y   YxY w)Nr=   r>   rM   float64r   r   )rG   rH   rI   rJ   rK   r(   r&   r'   r"   apiinterchanger   r%   r#   npnanr5   rL   rM   rI   rN   rO   rP   s         r:   test_empty_categorical_pyarrowrY   D   s    
 
		Y	1B&CHHeRXXc95GGIJKE%%'K		#	#-	8 @##22;?@||UBNNBFF8$<=>H&(+@ @s   1*C33C<c                  0   t        j                  dd      } ddg}| j                  d| j                  |d      i      }|j	                         }t        j                  d      5  t        |      }d d d        t        j                  dddgi      }t        j                  |       t        j                  dd	
      5  | j                  j                  | j                  j                  |      |      sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr=   r>   r?   r@   rF   large_stringr   r   Fr   check_stacklevel)rG   rH   rI   rJ   r(   r&   r'   r   r"   r%   r5   TableequalsrU   rX   s         r:   test_large_string_pyarrowr`   T   s    			Y	1B%.CHHi#~!>?@E%%'K		#	#-	8 -,-||Y78H&(+ 
	#	#-%	P Mxxr~~<<VDeLLLM M- -M Ms   $D >8D D	D)offsetlengthexpected_valuesffffff
@rW    @r      c                 ,   t        j                  dd      }g d}|j                  d|i      j                  | |      }|j	                         }t        j                  d      5  t        |      }d d d        t        j                  d|i      }t        j                  |       t        j                  dd      5  |j                  j                  |j                  j                  |      |      sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nr=   r>   )rd   Nre   rM   r   r   Fr\   )rG   rH   rI   slicer(   r&   r'   r   r"   r%   r5   r^   r_   rU   )	ra   rb   rc   rL   rM   rI   rN   rO   rP   s	            r:   test_bitmasks_pyarrowri   f   s     
		Y	1B
CHHeS\"((8E%%'K		#	#-	8 -,-||UO45H&(+ 
	#	#-%	P Mxxr~~<<VDeLLLM M- -M Ms   $C><8D
>D
Dc                  `    t         j                  j                  d      j                  dd      S )Nrf   id   rV   randomdefault_rngintegers     r:   <lambda>rr      s"    		%%a(11$< rq   c                  `    t         j                  j                  d      j                  dd      S )Nrf   r   rk   rl   rp   rq   r:   rr   rr      s"    		%%a(11!S9 rq   c                  \    t         j                  j                  d      j                         S )Nrf   )rV   rm   rn   rp   rq   r:   rr   rr      s    		%%a(//1 rq   c                  b    t         j                  j                  d      j                  ddg      S )Nrf   TF)rV   rm   rn   choicerp   rq   r:   rr   rr      s$    		%%a(//u> rq   c                  ,   t        t        j                  j                  d      j	                  dd      t        j                  j                  d      j	                  dd      t        j                  j                  d      j	                  dd            S )Nrf   il  i4  r         )yearmonthday)r   rV   rm   rn   ro   rp   rq   r:   rr   rr      sh    &&q)224>))''*33Ar:		%%a(11!R8
 rq   c           
          d\  }}t        |      D ci c]9  }dt        ||dz  z
  |z  dz          t        |      D cg c]	  }          c}; c}} t        j                         }t	        j
                  d      5  |j                         }d d d        j                         |k(  sJ |j                         |k(  sJ t        |j                               t         j                               k(  sJ d}t         fd|D              }t	        j
                  d      5  t        |j                  |            }	t        |j                  |            }
d d d        t	        j                   	
       t#        |	j$                  d	   t              sJ t#        |
j$                  d	   t              sJ y c c}w c c}}w # 1 sw Y   2xY w# 1 sw Y   vxY w)
N)
   ry   r8   rf   r   r   r   )r   rf   c              3   V   K   | ]   }t        j                               |    " y wN)r$   keys).0idxr   s     r:   	<genexpr>z!test_dataframe.<locals>.<genexpr>   s!     <S$tyy{#C(<s   &)_INTERCHANGE_PROTOCOL_BUFFERS)rangeintr"   r%   r&   r'   r(   num_columnsnum_rowsr$   column_namesr   tupler   select_columnsselect_columns_by_namer5   r1   attrs)r   NCOLSNROWSi_r7   df2indicesnamesrO   rP   s   `          r:   test_dataframer      s    LE5 u c1uqy=E)A-./05<2Pa462PPD 
d	B		#	#-	8 ! ! ??%%%<<>U"""  "#tDIIK'8888G<G<<E		#	#-	8 E 2 27 ;<!#"<"<U"CDE &(+fll#BCTJJJhnn%DEtLLL- 3Q! !E Es/   +F= F8F=G&5G8F=GGc            
      x   t        j                  t        j                  g d      t        j                  g d      t        j                  g d      d      } t        j                  j                  d      }| j                  D ci c]  }||j                  dt        |             ! }}|j                         D ]S  \  }}| j                  |j                  t        j                  t        |             |d	         }d | j                  ||f<   U t        j                  d
      5  | j!                         }d d d        j#                  d      j$                  |d   k(  sJ |j#                  d      j$                  |d   k(  sJ |j#                  d      j$                  |d   k(  sJ y c c}w # 1 sw Y   xxY w)N)      ?       @g      @g      @        )      ?      @      @g      @r   )r   r   r   r   r   xyzrf   r   )lowhighF)sizereplacer   r   r   r   r   )r"   r%   rV   rJ   rm   rn   columnsro   lenitemsindexrv   arangelocr&   r'   r(   r)   r,   )r7   rngr8   	dict_null	num_nullsnull_idxr   s          r:   test_missing_from_maskedr      s~   	341234	

B ))


"CCE::NCcllqs2wl77NIN#//+ %Y88JJryyR)	5JI
 !%x}	% 
	#	#-	8 ! ! !!#&11Ys^CCC!!#&11Ys^CCC!!#&11Ys^CCC O! !s   $F+(F00F9)r   r   r   )ffffff"@      %@皙'@)r   r   )r   rf   r   )TTFr   c                    t        j                  |       }t        j                  d      5  |j	                         }d d d        |j
                  D ]"  }j                  |      j                  dk(  r"J  y # 1 sw Y   ;xY w)Nr   r   r   )r"   r%   r&   r'   r(   r   r)   r,   )r   r7   r   col_names       r:   test_mixed_datar      sy     
d	B		#	#-	8 ! ! JJ @%%h/::a???@! !s   A77B c                     t        j                  t        j                  g d      t        j                  g d      t        j                  g d      d      } t	        j
                  d      5  | j                         }d d d        | j                  D ]"  }j                  |      j                  dk(  r"J  y # 1 sw Y   ;xY w)N)TNFNT)Nrf   Nr   rf   )r   r   Nr   Nr   r   r   rf   )
r"   r%   rV   rJ   r&   r'   r(   r   r)   r,   )r7   r   r   s      r:   test_mixed_missingr      s    	9:/078	

B 
	#	#-	8 ! ! JJ @%%h/::a???@! !s   /B::Cc                  J   dddddt         j                  gi} | d   dgz   }t        j                  d|i      }t	        j
                  d	      5  |j                         j                  d      }d d d        j                         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  |j                         j                  d      }d d d        |j                         dk(  sJ |j                  dk(  sJ |j                  d   t        j                  k(  sJ |j                  t        j                  dfk(  sJ y # 1 sw Y    xY w# 1 sw Y   xY w)Nzseparator datazabC|DeF,Hikz234,3245.67zgSaf,qWer|Grez
asd3,4sad| r   r   r      r   r      )rV   rW   r"   r%   r&   r'   r(   r)   r   r,   r*   r
   STRINGr-   r	   USE_BYTEMASK)string_datatest_str_datar7   r8   	df_sliceds        r:   test_stringr      s   FF
K   01RD8M	sM*	+B		#	#-	8 9 33C89 88:??>>Q99Q<9+++++!<!<a @@@@12I		#	#-	8 @%%'::3?@88:??>>Q99Q<9+++++!<!<a @@@@9 9@ @s    F: FFF"c                  B   t        j                  dg di      } t        j                  d      5  | j	                         j                  d      }d d d        t        j                  t        d      5  j                   d d d        y # 1 sw Y   :xY w# 1 sw Y   y xY w)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./	0B		#	#-	8 9 33C89	*2E	F 		 9 9 s    B	3B	BBc                     t        j                  dt        j                  d      t         j                  gi      } t	        j
                  d      5  | j                         j                  d      }d d d        j                         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%        | j                                      d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   z
2022-01-01r   r   rf   r   r   )r"   r%   	TimestampNaTr&   r'   r(   r)   r   r,   r*   r
   DATETIMEr-   r	   r.   r   r5   r   r   s     r:   test_datetimer     s   	sR\\,7@A	BB		#	#-	8 9 33C89 88:??>>Q99Q<9-----!<!<d CCCC		#	#-	8 F
b.1A1A1C"DEF F9 9F Fs    D3<.D?3D<?Ec                     t        j                  dt        j                  g d      i      } t        j                  d      5  | j                         j                  d      }d d d        t        j                  j                         d   d         }t        j                  g dd	      }t        j                  ||       y # 1 sw Y   bxY w)
Nr   r   br   r   r   r   r   )r   r   r   int8r*   )r"   r%   r#   r&   r'   r(   r)   rV   from_dlpackget_buffersrJ   assert_numpy_array_equal)r7   r8   rO   rP   s       r:    test_categorical_to_numpy_dlpackr     s    	sBNN?;<	=B		#	#-	8 9 33C89^^COO-f5a89Fxx	0H1	9 9s    CCr   c                    t        j                  dd       ddlm} t	        j
                  |       }t        j                  dd      5   ||      }d d d        t              }t        j                  ||d       y # 1 sw Y   -xY w)	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   (  sp     	8,G||D!H		#	#-%	P /$X./H%F&(eD/ /s   		A>>Breturnc                  B   t        j                  dd      } | j                  g dg dg      }dg}| j                  |g|      }t        j                  t
        d      5  t        j                  j                  j                  |d	
       d d d        y # 1 sw Y   y xY w)Nr=   r   )rf   rf      )r   r   rk   n_legs)r   z@Cannot do zero copy conversion into multi-column DataFrame blockr   F
allow_copy)
rG   rH   chunked_arrayrI   r   RuntimeErrorr"   rT   rU   r   )rL   r   r   rI   s       r:   test_multi_chunk_pyarrowr   6  s    			Y	1By+67FJEHHfXUH+E	P
 C 	))%E)B	C C Cs    ,BBc                     t        j                  dd       t        j                  g dd      } t        j                  | | gd      j                  d      }|j                         }t        j                  d	
      5  t        j                  t        d
      5  t        j                  j                  j                  |j                  d             d d d        d d d        t        j                  d	
      5  t        j                  j                  j                  |j                  d            }d d d        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 y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr=   r>   r   rf   NInt64[pyarrow]r   T)ignore_indexr   r   r   z:Found multi-chunk pyarrow array, but `allow_copy` is FalseFr   )r   r   Nr   r   NrS   rf   )rG   rH   r"   r4   concatto_framecopyr&   r'   r   r   rT   rU   r   r(   r%   r5   r   rJ   	_pa_arraychunks)serr7   df_origrO   rP   s        r:   test_multi_chunk_columnr   B  s   
	8,
))L(8
9C	C:D	1	:	:3	?BggiG		#	#-	8 R]]N
 	R FF--b.>.>%.>.PQ		RR 
	#	#-	8 V##2223C3Ct3C3TUV ||S"BC9UH&(+ "g&r#w}}&&--.!333ws|!!++223q888	R 	RR RV Vs0   >G3:G&G3::H &G0	+G33G= H	c                     t        j                  dd       ddddddd} t        j                  t	        di | gdd      j                         }t        j                  d	
      5  |j                         }t        j                  j                  j                  |      d   j                         }d d d        t        j                  di | }|k(  sJ y # 1 sw Y   &xY w)Nr=   r>   i  r   )rz   r{   r|   hourminutesecondtimestamp[ns][pyarrow]col0)r*   namer   r   rp   )rG   rH   r"   r4   r   r   r&   r'   r(   rT   rU   r   itemr   )timestamp_argsr7   dfirO   rP   s        r:   test_timestamp_ns_pyarrowr   [  s    
	8,N 
		#N	#$&
 hj	  
	#	#-	8 G ##2237?DDFG ||-n-HXG Gs   &ACCtzUTCz
US/Pacificc                 N   t        j                  ddd      j                  |       j                  |      }t        j                  d|i      }t        j                  d      5  t        j                  |t        |j                                      d d d        y # 1 sw Y   y xY w)Nz
2018-01-01r   D)periodsfreqts_tzr   r   )
r"   
date_rangetz_localizeas_unitr%   r&   r'   r5   r   r(   )r   unittz_datar7   s       r:   test_datetimetzdtyper	  t  s     	lAC8DDRHPPQUV  
w(	)B		#	#-	8 F
b.1A1A1C"DEF F Fs   $.BB$c           	      h   t        j                  dd      }dd lm} t	               rFt               r<t         j                  j                  |j                  d      }| j                  |       |j                  t        ddd      d t        ddd      g      }|j                  |d	      }|j                  d
|i      }|j                         }t        j                   d      5  t#        |      }d d d        t%        j&                  g dd
gd      }t        j(                  |       y # 1 sw Y   ;xY w)Nr=   r>   r   z_TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.)r   reason  r   rf   Asia/KathmandurM   r   r   )z2020-01-01 00:00:00+05:45r   z2020-01-02 00:00:00+05:45zdatetime64[us, Asia/Kathmandu])r   r*   )rG   rH   pyarrow.computecomputer   r   markxfailArrowInvalidapplymarkerrJ   r   assume_timezonerI   r(   r&   r'   r   r"   r%   r5   )	requestrL   pcr  rM   rI   rN   rO   rP   s	            r:   )test_interchange_from_non_pandas_tz_awarer    s   			Y	1B !2!4{{  ??; ! 
 	D!
((HT1a($q!0DE
FC


S"2
3CHHeS\"E%%'K		#	#-	8 -,- ||I.H
 (F+- -s   "D((D1c                 ~   t        j                  d      5  t        j                  dddgi      j	                         }|j	                         d d d        j                  d      j                         d   }|d   }t        j                  dt        j                  |d	   f}|d
   |fd<   fd_        fd_        | j                  dfd       t        j                  d      5  t        j                  j                  j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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 )\\3/0>>@&&() ++C0F  "G6?L?L	Q	L $A5GFO(F%5K"O-KL		#	#-	8 .
))"-. .#) )". .s   8D'4*D3'D03D<c                  2   t        j                  dg it              } t        j                  d      5  | j                         }t         j                  j                  j                  |      }d d d        t        j                  |        y # 1 sw Y    xY w)Nr   r   r   r   )
r"   r%   strr&   r'   r(   rT   rU   r   r5   )r7   r   rO   s      r:   test_empty_string_columnr+    ss    	sBis	+B		#	#-	8 8 ##22378 "f%8 8s   :BBc                     t        j                  d       t        j                  ddgid      } t	        j
                  dd      5  t        j                  j                  j                  | j                               }d d d        t        j                  ddgid	      }t	        j                  |       y # 1 sw Y   :xY w)
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_stringr.    s    
	"	sSEl*A	BB		#	#-%	P G##2223C3C3EFG||S3%L6H&(+G Gs   8B88Cc                      t        j                  g dd      j                         } t        j                  d      5  | j                         j                         }d d d        dgk(  sJ y # 1 sw Y   xY w)Nr   rf   r  r   )r   r   r   0)r"   r4   r   r&   r'   r(   r   )r7   r   s     r:   test_non_str_namesr2    sc    	91	%	.	.	0B		#	#-	8 2  "//12SE>>2 2s   A..A7c                     t        j                  g dg dd      } t        j                  d      5  | j	                         }d d d        t        j                  d      5  t        j                  t        d      5  t         j                  j                  j                  d       d d d        d d d        y # 1 sw Y   xxY w# 1 sw Y   xY w# 1 sw Y   y xY w)	Nr0  r   r   r   )r1  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_duplicatesr6    s    	I)4	5B		#	#-	8 ! !		#	#-	8 E]](	
 
	E FF--ce-D
	EE E! !
	E 
	EE Es/   B;"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*   r7  c                    t        j                  dd      }dd lm} |dk(  r|j	                  dd      }t        j                  d| i|      }t        j                  d	
      5  |j                  |j                               d   }d d d        j                  |k(  sJ |d   j                         | d   k(  sJ |d   j                         | d   k(  sJ |d   j                         J y # 1 sw Y   fxY wNr=   r   r   rF  usr  r   r   r   r   r   rf   rG   rH   r   rU   	timestampr"   r%   r&   r'   r   r(   typeas_pyr   r*   r7  rL   pair7   rO   s          r:   (test_pandas_nullable_with_missing_valuesrP    s    b 
		Y	1B%;;d,<=	sDk	/B		#	#-	8 =##B$4$4$67<=;;.(((!9??Q'''!9??Q'''!9??$$$= =s   ##C++C4r0  )r   r=  g      @)TFF)rB  rC  nothingr  c                    t        j                  dd      }dd lm} |dk(  r|j	                  dd      }t        j                  d| i|      }t        j                  d	
      5  |j                  |j                               d   }d d d        j                  |k(  sJ |d   j                         | d   k(  sJ |d   j                         | d   k(  sJ |d   j                         | d   k(  sJ y # 1 sw Y   lxY wrH  rJ  rN  s          r:   +test_pandas_nullable_without_missing_valuesrS  #  s    h 
		Y	1B%;;d,<=	sDk	/B		#	#-	8 =##B$4$4$67<=;;.(((!9??Q'''!9??Q'''!9??Q'''= =s   ##C11C:c                  "   t        j                  dd       t        j                  ddgid      } t	        j
                  d      5  | j                         j                  d      j                         d	   }d d d        J y # 1 sw Y   xY w)
Nr=   r>   r   r   r-  r   r   r   validity)	rG   rH   r"   r%   r&   r'   r(   r)   r   )r7   rO   s     r:   test_string_validity_bufferrV  f  s    
	8,	sSEl*A	BB		#	#-	8 V!!#66s;GGI*UV>>V Vs   1BBc                     t        j                  dd       t        j                  ddd gid      } t	        j
                  d      5  | j                         j                  d      j                         d	   }d d d        J |d
   }t        j                  d
t        j                  df}||k(  sJ y # 1 sw Y   <xY w)Nr=   r>   r   r   r-  r   r   r   rU  r   =)rG   rH   r"   r%   r&   r'   r(   r)   r   r
   BOOLr   )r7   rU  rO   rP   s       r:   &test_string_validity_buffer_no_missingrZ  o  s    
	8,	sS$K(0G	HB		#	#-	8 X##%88=IIKJWXa[F;#3#3S9HXX Xs   1B44B=c                  `   t        j                  dg id      } t        j                  d      5  | j	                         }t         j
                  j                  j                  |d      }d d d        t        j                  dg id      }t        j                  |       y # 1 sw Y   9xY w)Nr   r   r   r   r   Fr   )	r"   r%   r&   r'   r(   rT   rU   r   r5   )r7   r   rO   rP   s       r:   test_empty_dataframer\  {  s    	sBiv	.B		#	#-	8 J ##22352IJ ||S"IV4H&(+	J Js   <B$$B-)r   r7  expected_buffer_dtyper   categoryr   r  crX  |i  zM8[ns]@   ztsn:)r   bcN)r   rf   r  r]  c                 "   t        j                  d| i      }t        j                  d      5  |j	                         }d d d        j                  d      }|j                  |k(  sJ |j                         d   d   |k(  sJ y # 1 sw Y   GxY w)Nr   r   r   r   )r"   r%   r&   r'   r(   r)   r*   r   )r   r7  r]  r7   r   r8   s         r:   test_buffer_dtype_categoricalrd    s    N 
vtn	%B		#	#-	8 ! !

 
 
(C99&&&??V$Q'+@@@@	! !s   BBc                      t        j                  dd      } dddgg dgi}| j                  |      }t        |      }t	        j
                  |      }t        j                  ||       y )Nr=   r   r   r   rf   r4  )rG   rH   rI   r   r"   r%   r&   r5   )rL   r   tblrO   rP   s        r:   test_from_dataframe_list_dtyperg    s\    			Y	1B1a&)$%D
((4.CC F||D!H&(+rq   )r   N)Mr   r   numpyrV   rG   pandas._libs.tslibsr   pandas.compatr   r   pandasr"   pandas._testing_testingr&   pandas.core.interchange.columnr   *pandas.core.interchange.dataframe_protocolr	   r
   &pandas.core.interchange.from_dataframer   pandas.core.interchange.utilsr   r  parametrizer;   rQ   filterwarningsrY   r`   floatri   r   r   rJ   r   r   r   r   r   r   r   r   r   r   r	  r  r(  r+  r.  r2  r6  StringDtyperW   utcr$   r*  rP  rS  rV  rZ  r\  r4   r+   INTr   INT64r   r"  r#  FLOATFLOAT64r   r   rd  rg  rp   rq   r:   <module>r{     sv  
   $
   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	$nbnnbff&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:,BNNBFF+	

 
*+<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 BIIoZ8""AsC0]]AsC(	
 BII$1%xa';XdAq=QR VS1]]B 1 137	
 BII'(q+"4"4c:^^Q 1 137	
 BIIi ]]B 1 137]]B 1 137	
 BIIk"__b+"5"5s;__b+"5"5s;	
1 BA
))A)S#s23A !Cc!9:A 
	AC BA,rq   