
    .i_                     X   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j4                  j7                  d
ddg      d        Zd Zej4                  j=                  d      d        Zd Z ej4                  j7                  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j4                  j7                  d
d d d d d g      d        Z#d Z$ej4                  j7                  d
g d g d!d"g d#g d!d" ejJ                  g d$       ejJ                  g d#       ejJ                  g d!      d%g      d&        Z&d' Z'd( Z(d) Z)d* Z*d+ Z+ej4                  j7                  d
i d,g ig      d-        Z,dxd/Z-dxd0Z.d1 Z/ej4                  j7                  d2d3d4g      d5        Z0d6 Z1dxd7Z2d8 Z3d9 Z4d: Z5d; Z6ej4                  j7                  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jn                  ejp                  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jr                  X       e dSddejr                  X      dgdYdZfg      d
e:d[e;d\e;d.dfd]       Z<ej4                  j7                  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jn                  ejp                  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jr                  X       e dSddejr                  X       e dSddbejr                  X      gdYdZfg      d
e:d[e;d\e;d.dfdc       Z=dxddZ>dxdeZ?df Z@ej4                  j7                  dg ej                  g dhdij      ej                  dkdldmfej                  dkdldnff ej                   e dodd       e dodd       e doddb      gdpj      ej                  dqdrdmfej                  dqej                  dmff ej                  g ds      ej                  dkej                  dmfej                  dkej                  dmff ej                  g d^      ej                  dqej                  dmfej                  dqej                  dmff ej                  g dt      ej                  dqej                  dmfej                  dqej                  dmffg      d
ej                  d\eKeeLe;e;f   dueKeeLe;e;f   d.dfdv       ZMdw ZNy)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  |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        `/var/www/app/trading-bot/venv/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@   rA   rB   rC   rD   rE   rF   )r   )pytestimportorskiptablearraydictionary_encoder)   r'   r(   r   r#   r$   r&   r6   )paarrrJ   exchange_dfresultrG   expecteds          r;   test_categorical_pyarrowrR   5   s    			Y	1B
ICHHi#!@!@!BCDE%%'K		#	#-	8 -,-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?   rN   float64r   r   )rH   rI   rJ   rK   rL   r)   r'   r(   r#   apiinterchanger   r&   r$   npnanr6   rM   rN   rJ   rO   rP   rQ   s         r;   test_empty_categorical_pyarrowrZ   E   s    
 
		Y	1B&CHHeRXXc95GGIJKE%%'K		#	#-	8 @##22;?@||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@   rA   rG   large_stringr   r   Fr   check_stacklevel)rH   rI   rJ   rK   r)   r'   r(   r   r#   r&   r6   TableequalsrV   rY   s         r;   test_large_string_pyarrowra   U   s    			Y	1B%.CHHi#~!>?@E%%'K		#	#-	8 -,-||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
@rX    @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?   )re   Nrf   rN   r   r   Fr]   )rH   rI   rJ   slicer)   r'   r(   r   r#   r&   r6   r_   r`   rV   )	rb   rc   rd   rM   rN   rJ   rO   rP   rQ   s	            r;   test_bitmasks_pyarrowrj   g   s     
		Y	1B
CHHeS\"((8E%%'K		#	#-	8 -,-||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 )Nrg   id   rW   randomdefault_rngintegers     r;   <lambda>rs      s"    		%%a(11$< rr   c                  `    t         j                  j                  d      j                  dd      S )Nrg   r   rl   rm   rq   rr   r;   rs   rs      s"    		%%a(11!S9 rr   c                  \    t         j                  j                  d      j                         S )Nrg   )rW   rn   ro   rq   rr   r;   rs   rs      s    		%%a(//1 rr   c                  b    t         j                  j                  d      j                  ddg      S )Nrg   TF)rW   rn   ro   choicerq   rr   r;   rs   rs      s$    		%%a(//u> rr   c                  ,   t        t        j                  j                  d      j	                  dd      t        j                  j                  d      j	                  dd      t        j                  j                  d      j	                  dd            S )Nrg   il  i4  r         )yearmonthday)r   rW   rn   ro   rp   rq   rr   r;   rs   rs      sh    &&q)224>))''*33Ar:		%%a(11!R8
 rr   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)
   rz   r9   rg   r   r   r   )r   rg   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_namer6   r2   attrs)r   NCOLSNROWSi_r8   df2indicesnamesrP   rQ   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zrg   r   )lowhighF)sizereplacer   r   r   r   r   )r#   r&   rW   rK   rn   ro   columnsrp   lenitemsindexrw   arangelocr'   r(   r)   r*   r-   )r8   rngr9   	dict_null	num_nullsnull_idxr   s          r;   test_missing_from_maskedr      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   rg   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   r8   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)Nrg   Nr   rg   )r   r   Nr   Nr   r   r   rg   )
r#   r&   rW   rK   r'   r(   r)   r   r*   r-   )r8   r   r   s      r;   test_mixed_missingr      s    	9:/078	

B 
	#	#-	8 ! ! 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      )rW   rX   r#   r&   r'   r(   r)   r*   r   r-   r+   r   STRINGr.   r
   USE_BYTEMASK)string_datatest_str_datar8   r9   	df_sliceds        r;   test_stringr      s   FF
K   01RD8M	sM*	+B		#	#-	8 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   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./	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   rg   r   r   )r#   r&   	TimestampNaTr'   r(   r)   r*   r   r-   r+   r   DATETIMEr.   r
   r/   r   r6   r   r   s     r;   test_datetimer     s   	sR\\,7@A	BB		#	#-	8 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*   rW   from_dlpackget_buffersrK   assert_numpy_array_equal)r8   r9   rP   rQ   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)	rH   rI   pyarrow.interchanger   r#   r&   r'   r(   r6   )r   pa_from_dataframerQ   arrow_dfrP   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   )rg   rg      )r   r   rl   n_legs)r   z@Cannot do zero copy conversion into multi-column DataFrame blockr   F
allow_copy)
rH   rI   chunked_arrayrJ   r   RuntimeErrorr#   rU   rV   r   )rM   r   r   rJ   s       r;   test_multi_chunk_pyarrowr   7  s    			Y	1By+67FJEHHfXUH+E	P
 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   rg   NInt64[pyarrow]r   T)ignore_indexr   r   r   z:Found multi-chunk pyarrow array, but `allow_copy` is FalseFr   )r   r   Nr   r   NrT   rg   )rH   rI   r#   r5   concatto_framecopyr'   r(   r   r   rU   rV   r   r)   r&   r6   r   rK   	_pa_arraychunks)serr8   df_origrP   rQ   s        r;   test_multi_chunk_columnr   C  s   
	8,
))L(8
9C	C:D	1	:	:3	?BggiG		#	#-	8 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   )r{   r|   r}   hourminutesecondtimestamp[ns][pyarrow]col0)r+   namer   r   rq   )rH   rI   r#   r5   r   r   r'   r(   r)   rU   rV   r   itemr   )timestamp_argsr8   dfirP   rQ   s        r;   test_timestamp_ns_pyarrowr   \  s    
	8,N 
		#N	#$&
 hj	  
	#	#-	8 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(   r6   r   r)   )r   unittz_datar8   s       r;   test_datetimetzdtyper
  u  s     	lAC8DDRHPPQUV  
w(	)B		#	#-	8 F
b.1A1A1C"DEF F Fs   $.BB$c           	      t   t        j                  dd      }dd lm} t	               rLt               rBt        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   rg   Asia/KathmandurN   r   r   )z2020-01-01 00:00:00+05:45r   z2020-01-02 00:00:00+05:45zdatetime64[us, Asia/Kathmandu])r   r+   )rH   rI   pyarrow.computecomputer   r   r   markxfailArrowInvalidapplymarkerrK   r   assume_timezonerJ   r)   r'   r(   r   r#   r&   r6   )	requestrM   pcr  rN   rJ   rO   rP   rQ   s	            r;   )test_interchange_from_non_pandas_tz_awarer    s   			Y	1B !2!49M{{  ??; ! 
 	D!
((HT1a($q!0DE
FC


S"2
3CHHeS\"E%%'K		#	#-	8 -,- ||I.H
 (F+- -s   (D..D7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   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 )\\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)   rU   rV   r   r6   )r8   r   rP   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+  )rH   rI   r#   r&   r'   r(   rU   rV   r   r)   r6   )r8   rP   rQ   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   rg   r  r   )r   r   r   0)r#   r5   r   r'   r(   r)   r   )r8   r   s     r;   test_non_str_namesr3    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)	Nr1  r   r   r   )r2  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_duplicatesr7    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+   r8  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   rG  usr  r   r   r   r   r   rg   rH   rI   r   rV   	timestampr#   r&   r'   r(   r   r)   typeas_pyr   r+   r8  rM   pair8   rP   s          r;   (test_pandas_nullable_with_missing_valuesrQ    s    b 
		Y	1B%;;d,<=	sDk	/B		#	#-	8 =##B$4$4$67<=;;.(((!9??Q'''!9??Q'''!9??$$$= =s   ##C++C4r1  )r   r>  g      @)TFF)rC  rD  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rI  rK  rO  s          r;   +test_pandas_nullable_without_missing_valuesrT  $  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)	rH   rI   r#   r&   r'   r(   r)   r*   r   )r8   rP   s     r;   test_string_validity_bufferrW  g  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   rV  r   =)rH   rI   r#   r&   r'   r(   r)   r*   r   r   BOOLr   )r8   rV  rP   rQ   s       r;   &test_string_validity_buffer_no_missingr[  p  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)   rU   rV   r   r6   )r8   r   rP   rQ   s       r;   test_empty_dataframer]  |  s    	sBiv	.B		#	#-	8 J ##22352IJ ||S"IV4H&(+	J Js   <B$$B-)r   r8  expected_buffer_dtyper   categoryr   r  crY  |i  zM8[ns]@   ztsn:)r   bcN)r   rg   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   r8  r^  r8   r   r9   s         r;   test_buffer_dtype_categoricalre    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   rg   r5  )rH   rI   rJ   r   r#   r&   r'   r6   )rM   r   tblrP   rQ   s        r;   test_from_dataframe_list_dtyperh    s\    			Y	1B1a&)$%D
((4.CC F||D!H&(+rr   )r   N)Or   r   numpyrW   rH   pandas._libs.tslibsr   pandas.compatr   r   pandas.compat.pyarrowr   pandasr#   pandas._testing_testingr'   pandas.core.interchange.columnr	   *pandas.core.interchange.dataframe_protocolr
   r   &pandas.core.interchange.from_dataframer   pandas.core.interchange.utilsr   r  parametrizer<   rR   filterwarningsrZ   ra   floatrj   r   r   rK   r   r   r   r   r   r   r   r   r   r   r
  r  r)  r,  r/  r3  r7  StringDtyperX   utcr%   r+  rQ  rT  rW  r[  r]  r5   r,   INTr   INT64r   r#  r$  FLOATFLOAT64r   r   re  rh  rq   rr   r;   <module>r}     sy  
   $ 7   7 B 5 "35I!JKF LF2,  J
,
,M$ +	
D3ec*+	
D5<%&	
D3%	
AU5\"#	
Au	
Ae~
M
M$ 
<91>	

MM8D2 
$56/0-.)$+,	
@@@ A:F2 "sBi1
E 2
E	C922 |45F 6F,<..&,E& '	w(	'1	vv&	/	
 	

 
Iy1	.	:	i0	0&9	$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,rr   