+
    xȇi_                        ^ RI H t Ht ^ RIt^ RIt^ RIHt ^ RIHtH	t	 ^ RI
t^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ]P0                  P3                  R	RcRd.4      R
 4       tR t]P0                  P9                  R4      R 4       tR t]P0                  P3                  Re^ RR]! R4      R.3^R]! R4      R.3^RR.3^ ^R]! R4      .3^ ^R.3^^]! R4      .3.4      R 4       t ]P0                  P3                  R	R R R R R .4      R 4       t!R t"]P0                  P3                  R	R. RfOR. RgO/R. RhOR. RgO/R]PF                  ! . RiO4      R]PF                  ! . RhO4      R]PF                  ! . RgO4      /.4      R 4       t$R t%R t&R  t'R! t(R" t)]P0                  P3                  R	/ R#. /.4      R$ 4       t*R% R& lt+R' R( lt,R) t-]P0                  P3                  R*R+R,.4      R- 4       t.R. t/R/ R0 lt0R1 t1R2 t2R3 t3R4 t4]P0                  P3                  Rj. RkOR5R63. RkOR7R63. RkOR8R93. RkOR:R93. RkOR;R<3. RkOR=R<3. RlOR>R?3. RlOR@R?3. RmORARB3. RmORCRB3. RnO]Pj                  ! ]Pl                  RD7      RE3. RnORFRE3] ! RG^^4      ] ! RG^^4      R.RHRI3] ! RG^^4      ] ! RG^^4      R.RJRK3] ! RG^^]Pn                  RL7      ] ! RG^^]Pn                  RL7      R.RMRN3.4      RO RP l4       t8]P0                  P3                  Rj. RoOR5R63. RoOR7R63. RoOR8R93. RoOR:R93. RoOR;R<3. RoOR=R<3. RpOR>R?3. RpOR@R?3. RqORARB3. RqORCRB3. RrO]Pj                  ! ]Pl                  RD7      RE3. RrORFRE3] ! RG^^4      ] ! RG^^4      ] ! RG^^4      .RHRI3] ! RG^^4      ] ! RG^^4      ] ! RG^^4      .RJRK3] ! RG^^]Pn                  RL7      ] ! RG^^]Pn                  RL7      ] ! RG^^]Pn                  RL7      .RMRN3.4      RQ RR l4       t9RS RT lt:RU RV lt;RW t<]P0                  P3                  Rs]Pz                  ! . RtORXRY7      ]P|                  ^RZR[3]P~                  ^RZR\33]Pz                  ! ] ! R]^^4      ] ! R]^^4      ] ! R]^^4      .R^RY7      ]P                  ^@R_R[3]P~                  ^@]P                  R[33]Pz                  ! . RuO4      ]P                  ^]P                  R[3]P                  ^]P                  R[33]Pz                  ! . RoO4      ]P~                  ^@]P                  R[3]P~                  ^@]P                  R[33]Pz                  ! . RvO4      ]P                  ^@]P                  R[3]P                  ^@]P                  R[33.4      R` Ra l4       tGRb tHR# )w    )datetimetimezoneN)iNaT)is_ci_environmentis_platform_windows)PandasColumn)ColumnNullType	DtypeKindfrom_dataframe)ArrowCTypesdatac           	         R \         P                  ! \        R4      ^,          RR7      R\         P                  ! \        R4      ^,          RR7      /p\         P                  ! RW^ ,          ,          /4      p\        P
                  ! RR7      ;_uu_ 4        VP                  4       P                  R4      pR	R	R	4       XP                  ^ ,          \        P                  8X  g   Q hVP                  ^ 8X  g   Q hVP                  \        P                  R38X  g   Q hVP                  4       ^8X  g   Q hVP                   pVR
,          V ^,          8X  g   Q hVR,          RJ g   Q h\#        VR,          \$        4      '       g   Q h\        P&                  ! VR,          P(                  \         P*                  ! . RO4      4       \        P
                  ! RR7      ;_uu_ 4        \        P,                  ! V\/        VP                  4       4      4       R	R	R	4       R	#   + '       g   i     ELm; i  + '       g   i     R	# ; i)orderedtestdataT)r   	unorderedFAInterchangematchN
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   &    r/Users/max/.openclaw/workspace/postharvest/venv/lib/python3.14/site-packages/pandas/tests/interchange/test_impl.pytest_categorical_dtyper9      s    	2>>$z"2R"7FR^^D$4r$95I 
s-1g68	9B		#	#-	8	8 33C8 
999Q<900000>>Q!<!<b AAAA>>q   ''HL!T!W,,,O$,,,h|,l;;;;##RYY/H%I 
	#	#-	8	8
b.1A1A1C"DE 
9	8 
9	8	8 
9	8	8s    H"/H/H,	/I 	c                     \         P                  ! R R4      p . ROpV P                  RV P                  V4      P	                  4       /4      pVP                  4       p\        P                  ! RR7      ;_uu_ 4        \        V4      pRRR4       \        P                  ! V. ROR7      p\        P                  ! RV/4      p\        P                  ! XV4       R#   + '       g   i     L[; i)	pyarrow11.0.0weekdayr   r   N)r   )	MonTuer>   Wedr>   ThuFriSatSun)r>   r?   r@   rA   rB   rC   rD   )pytestimportorskiptablearraydictionary_encoder&   r$   r%   r   r    r!   r#   r3   )paarrrG   exchange_dfresultr=   expecteds          r8   test_categorical_pyarrowrO   4   s    			Y	1B
ICHHi#!@!@!BCDE%%'K		#	#-	8	8, 
9nnIG ||Y01H&(+ 
9	8s   ;CC*	zDignore:Constructing a Categorical with a dtype and values containingc                  (   \         P                  ! R R4      p R.pV P                  RV P                  VR4      P	                  4       /4      pVP                  4       p\        P                  ! RR7      ;_uu_ 4        \        P                  P                  P                  V4      pRRR4       \        P                  ! R\        P                  ! \        P                  .4      /4      p\        P                   ! XV4       R#   + '       g   i     Ld; i)r;   r<   NrK   float64r   r   )rE   rF   rG   rH   rI   r&   r$   r%   r    apiinterchanger   r#   r!   npnanr3   rJ   rK   rG   rL   rM   rN   s         r8   test_empty_categorical_pyarrowrW   D   s    
 
		Y	1B&CHHeRXXc95GGIJKE%%'K		#	#-	8	8##22;? 
9||UBNNBFF8$<=>H&(+ 
9	8s   ;*DD	c                     \         P                  ! R R4      p RR.pV P                  RV P                  VR4      /4      pVP	                  4       p\
        P                  ! RR7      ;_uu_ 4        \        V4      pRRR4       \        P                  ! RRR./4      p\
        P                  ! XV4       \
        P                  ! RR	R
7      ;_uu_ 4        V P                  P                  V P                  P                  V4      V4      '       g   Q h RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r;   r<   r>   r?   r=   large_stringr   r   NFr   check_stacklevel)rE   rF   rG   rH   r&   r$   r%   r   r    r#   r3   TableequalsrS   rV   s         r8   test_large_string_pyarrowr^   T   s    			Y	1B%.CHHi#~!>?@E%%'K		#	#-	8	8, 
9||Y78H&(+ 
	#	#-%	P	Pxxr~~<<VDeLLLL 
Q	P 
9	8 
Q	P	Ps   .D>D/D,	/E 	ffffff
@rU    @c                    \         P                  ! R R4      p. ROpVP                  RV/4      P                  W4      pVP	                  4       p\
        P                  ! RR7      ;_uu_ 4        \        V4      pRRR4       \        P                  ! RV/4      p\
        P                  ! XV4       \
        P                  ! RRR7      ;_uu_ 4        VP                  P                  VP                  P                  V4      V4      '       g   Q h RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)	r;   r<   NrK   r   r   FrZ   )r_   Nr`   )rE   rF   rG   slicer&   r$   r%   r   r    r#   r3   r\   r]   rS   )	offsetlengthexpected_valuesrJ   rK   rG   rL   rM   rN   s	   &&&      r8   test_bitmasks_pyarrowrf   f   s     
		Y	1B
CHHeS\"((8E%%'K		#	#-	8	8, 
9||UO45H&(+ 
	#	#-%	P	Pxxr~~<<VDeLLLL 
Q	P 
9	8 
Q	P	Ps   -D>D,D)	,D=	c                  `    \         P                  P                  ^4      P                  R^d4      # )   irT   randomdefault_rngintegers     r8   <lambda>ro      s     		%%a(11$<rn   c                  `    \         P                  P                  ^4      P                  ^^d4      # rh   ri   rm   rn   r8   ro   ro      s     		%%a(11!S9rn   c                  \    \         P                  P                  ^4      P                  4       # rq   )rT   rj   rk   rm   rn   r8   ro   ro      s    		%%a(//1rn   c                  b    \         P                  P                  ^4      P                  RR.4      # )rh   TF)rT   rj   rk   choicerm   rn   r8   ro   ro      s"    		%%a(//u>rn   c                  ,   \        \        P                  P                  ^4      P	                  RR4      \        P                  P                  ^4      P	                  ^^4      \        P                  P                  ^4      P	                  ^^4      R7      # )rh   il  i4  )yearmonthday)r   rT   rj   rk   rl   rm   rn   r8   ro   ro      sf    &&q)224>))''*33Ar:		%%a(11!R8
rn   c           
        a  ^
^r!\        V4       UUu/ uFK  pR\        W1^,          ,
          V,          ^,           4       2\        V4       Uu. uF
  pS ! 4       NK  	  upbKM  	  uppo \        P                  ! S 4      p\        P
                  ! RR7      ;_uu_ 4        VP                  4       pRRR4       XP                  4       V8X  g   Q hVP                  4       V8X  g   Q h\        VP                  4       4      \        S P                  4       4      8X  g   Q hRp\        ;QJ d    . V 3R lV 4       F  NK  	  5M! V 3R lV 4       4      p\        P
                  ! RR7      ;_uu_ 4        \        VP                  V4      4      p	\        VP                  V4      4      p
RRR4       \        P                   ! X	X
4       \#        V	P$                  R,          \        4      '       g   Q h\#        V
P$                  R,          \        4      '       g   Q hR# u upi u uppi   + '       g   i     EL|; i  + '       g   i     L; i)
   r6   r   r   Nc              3   d   <"   T F%  p\        SP                  4       4      V,          x  K'  	  R # 5iN)r"   keys).0idxr   s   & r8   	<genexpr>!test_dataframe.<locals>.<genexpr>   s$     <GS$tyy{#C((Gs   -0_INTERCHANGE_PROTOCOL_BUFFERS)r   rh   )rangeintr    r#   r$   r%   r&   num_columnsnum_rowsr"   column_namesr}   tupler   select_columnsselect_columns_by_namer3   r/   attrs)r   NCOLSNROWSi_r5   df2indicesnamesrM   rN   s   f          r8   test_dataframer      s    r5 uA c1qy=E)A-./05<2P<a46<2PPD 
d	B		#	#-	8	8  
9 ??%%%<<>U"""  "#tDIIK'8888GE<G<EE<G<<E		#	#-	8	8 2 27 ;<!#"<"<U"CD 
9 &(+fll#BCTJJJJhnn%DEtLLLL- 3Q 
9	8	8 
9	8s/   :HHHH!.5H5H!H2	5I	c                     \         P                  ! R \        P                  ! . R	O4      R\        P                  ! . R
O4      R\        P                  ! . RO4      /4      p \        P                  P                  ^4      pV P                   Uu/ uF  q"VP                  ^ \        V 4      R7      bK!  	  ppVP                  4        FW  w  r$V P                  VP                  \        P                  ! \        V 4      4      VRR7      ,          pRV P                  WR3&   KY  	  \        P                  ! RR7      ;_uu_ 4        V P!                  4       pRRR4       XP#                  R 4      P$                  VR ,          8X  g   Q hVP#                  R4      P$                  VR,          8X  g   Q hVP#                  R4      P$                  VR,          8X  g   Q hR# u upi   + '       g   i     L; i)xyz)lowhighF)sizereplaceNr   r   )      ?       @g      @g      @        )      ?      @      @g      @r   )r   r   r   r   r   )r    r#   rT   rH   rj   rk   columnsrl   lenitemsindexrt   arangelocr$   r%   r&   r'   r*   )r5   rngr6   	dict_null	num_nullsnull_idxr   s          r8   test_missing_from_maskedr      sv   	341234	

B ))


"CCE::N:Ccllqs2wl77:IN#//+88JJryyR)	5JI
 !%x}	 , 
	#	#-	8	8  
9 !!#&11Ys^CCC!!#&11Ys^CCC!!#&11Ys^CCC O 
9	8s   %G=GG(	r   r   r   c                 2   \         P                  ! V 4      p\        P                  ! R R7      ;_uu_ 4        VP	                  4       pRRR4       VP
                   F%  pXP                  V4      P                  ^ 8X  d   K%  Q h	  R#   + '       g   i     LG; i)r   r   N)r    r#   r$   r%   r&   r   r'   r*   )r   r5   r   col_names   &   r8   test_mixed_datar      sn     
d	B		#	#-	8	8  
9 JJ%%h/::a???  
9	8s   BB	c                     \         P                  ! R \        P                  ! . RO4      R\        P                  ! . RO4      R\        P                  ! . RO4      /4      p \        P
                  ! RR7      ;_uu_ 4        V P                  4       pRRR4       V P                   F%  pXP                  V4      P                  ^8X  d   K%  Q h	  R#   + '       g   i     LG; i)	r   Nr   r   r   r   )TNFNT)Nrh   N   rh   )ffffff"@      %@N皙'@N)
r    r#   rT   rH   r$   r%   r&   r   r'   r*   )r5   r   r   s      r8   test_mixed_missingr      s    	9:/078	

B 
	#	#-	8	8  
9 JJ%%h/::a???  
9	8s   >CC	c                     R RRRR\         P                  ./p V R ,          R.,           p\        P                  ! RV/4      p\        P
                  ! RR7      ;_uu_ 4        VP                  4       P                  R4      pR	R	R	4       XP                  4       ^8X  g   Q hVP                  ^8X  g   Q hVP                  ^ ,          \        P                  8X  g   Q hVP                  \        P                  ^ 38X  g   Q hVR
,          p\        P
                  ! RR7      ;_uu_ 4        VP                  4       P                  R4      pR	R	R	4       VP                  4       ^8X  g   Q hVP                  ^8X  g   Q hVP                  ^ ,          \        P                  8X  g   Q hVP                  \        P                  ^ 38X  g   Q hR	#   + '       g   i     ELM; i  + '       g   i     L; i)zseparator datazabC|DeF,Hikz234,3245.67zgSaf,qWer|Grez
asd3,4sad| r   r   r   N:r   NN)rT   rU   r    r#   r$   r%   r&   r'   r   r*   r(   r
   STRINGr+   r	   USE_BYTEMASK)string_datatest_str_datar5   r6   	df_sliceds        r8   test_stringr      s   FF
K   01RD8M	sM*	+B		#	#-	8	8 33C8 
9 88:??>>Q99Q<9+++++!<!<a @@@@2I		#	#-	8	8%%'::3? 
988:??>>Q99Q<9+++++!<!<a @@@@ 
9	8	8 
9	8s     G% GG	G(	c                     \         P                  ! R . RO/4      p \        P                  ! RR7      ;_uu_ 4        V P	                  4       P                  R 4      pRRR4       \        P                  ! \        RR7      ;_uu_ 4        XP                   RRR4       R#   + '       g   i     LK; i  + '       g   i     R# ; i)r   r   r   Nznot supported yet)r   rz   r   rm   )
r    r#   r$   r%   r&   r'   rE   raisesNotImplementedErrorr(   r5   r6   s     r8   test_nonstring_objectr     s{    	s./	0B		#	#-	8	8 33C8 
9	*2E	F	F		 
G	F 
9	8	F	F	Fs    BB0B-	0C	c            	         \         P                  ! R \         P                  ! R4      \         P                  ./4      p \        P
                  ! RR7      ;_uu_ 4        V P                  4       P                  R 4      pRRR4       XP                  4       ^8X  g   Q hVP                  ^8X  g   Q hVP                  ^ ,          \        P                  8X  g   Q hVP                  \        P                  \         38X  g   Q h\        P
                  ! RR7      ;_uu_ 4        \        P"                  ! V \%        V P                  4       4      4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r   z
2022-01-01r   r   N)r    r#   	TimestampNaTr$   r%   r&   r'   r   r*   r(   r
   DATETIMEr+   r	   r,   r   r3   r   r   s     r8   test_datetimer     s   	sR\\,7@A	BB		#	#-	8	8 33C8 
9 88:??>>Q99Q<9-----!<!<d CCCC		#	#-	8	8
b.1A1A1C"DE 
9	8 
9	8 
9	8	8s    E/E(E%	(E9	c                     \         P                  ! R \         P                  ! . RO4      /4      p \        P                  ! RR7      ;_uu_ 4        V P                  4       P                  R 4      pRRR4       \        P                  ! XP                  4       R,          ^ ,          4      p\        P                  ! . RORR7      p\        P                  ! W#4       R#   + '       g   i     Lt; i)	r   r   r   Nr   int8r(   r   br   )r   r   r   )r    r#   r!   r$   r%   r&   r'   rT   from_dlpackget_buffersrH   assert_numpy_array_equal)r5   r6   rM   rN   s       r8    test_categorical_to_numpy_dlpackr     s    	sBNN?;<	=B		#	#-	8	8 33C8 
9^^COO-f5a89Fxx	0H1	 
9	8s    CC*	r   c                 :   \         P                  ! R R4       ^ RIHp \        P
                  ! V 4      p\        P                  ! RRR7      ;_uu_ 4        V! V4      pRRR4       \        X4      p\        P                  ! WBRR7       R#   + '       g   i     L5; i)r;   14.0.0r   r   FrZ   N)check_column_type)	rE   rF   pyarrow.interchanger   r    r#   r$   r%   r3   )r   pa_from_dataframerN   arrow_dfrM   s   &    r8   test_empty_pyarrowr   (  sl     	8,G||D!H		#	#-%	P	P$X. 
QH%F&eD 
Q	Ps   	B

B	c                    V ^8  d   QhRR/# rh   returnNrm   )formats   "r8   __annotate__r   6  s     	C 	C$ 	Crn   c                  h   \         P                  ! R R4      p V P                  . R	O. R
O.4      pR.pV P                  V.VR7      p\         P                  ! \
        RR7      ;_uu_ 4        \        P                  P                  P                  VRR7       RRR4       R#   + '       g   i     R# ; i)r;   r   n_legs)r   z@Cannot do zero copy conversion into multi-column DataFrame blockr   F
allow_copyN)rh   rh      )r      d   )
rE   rF   chunked_arrayrG   r   RuntimeErrorr    rR   rS   r   )rJ   r   r   rG   s       r8   test_multi_chunk_pyarrowr   6  s    			Y	1By+67FJEHHfXUH+E	P
 
 	))%E)B	
 
 
 
s   *,B  B1	c                    V ^8  d   QhRR/# r   rm   )r   s   "r8   r   r   B  s     9 9 9rn   c            
         \         P                  ! R R4       \        P                  ! . RORR7      p \        P                  ! W .RR7      P                  R4      pVP                  4       p\        P                  ! RR	7      ;_uu_ 4        \         P                  ! \        R
R	7      ;_uu_ 4        \        P                  P                  P                  VP                  RR7      4       RRR4       RRR4       \        P                  ! RR	7      ;_uu_ 4        \        P                  P                  P                  VP                  RR7      4      pRRR4       \        P                  ! R. RO/RR7      p\        P                   ! XV4       \        P                   ! W4       \#        VR,          P$                  P&                  P(                  4      ^8X  g   Q h\#        VR,          P$                  P&                  P(                  4      ^8X  g   Q hR#   + '       g   i     EL3; i  + '       g   i     EL?; i  + '       g   i     L; i)r;   r<   NInt64[pyarrow]r   T)ignore_indexr   r   r   z:Found multi-chunk pyarrow array, but `allow_copy` is FalseFr   rQ   r   rh   N)r   r   Nr   r   N)rE   rF   r    r2   concatto_framecopyr$   r%   r   r   rR   rS   r   r&   r#   r3   r   rH   	_pa_arraychunks)serr5   df_origrM   rN   s        r8   test_multi_chunk_columnr   B  s   
	8,
))L(8
9C	C:D	1	:	:3	?BggiG		#	#-	8	8]]N
 
 FF--b.>.>%.>.PQ	
 
9 
	#	#-	8	8##2223C3Ct3C3TU 
9 ||S"BC9UH&(+ "&r#w}}&&--.!333ws|!!++223q888
 
 
 
9	8	8 
9	8s0   	%H&.:H	(H&:H:H#	H&&H7	:I
	c                     \         P                  ! R R4       RRR^R^R^R^R^/p \        P                  ! \	        R/ V B .R	R
R7      P                  4       p\        P                  ! RR7      ;_uu_ 4        VP                  4       p\        P                  P                  P                  V4      R
,          P                  4       pRRR4       \        P                  ! R/ V B pXV8X  g   Q hR#   + '       g   i     L1; i)r;   r<   rv   i  rw   rx   hourminutesecondtimestamp[ns][pyarrow]col0)r(   namer   r   Nrm   )rE   rF   r    r2   r   r   r$   r%   r&   rR   rS   r   itemr   )timestamp_argsr5   dfirM   rN   s        r8   test_timestamp_ns_pyarrowr   [  s    
	8,q!!N 
		#N	#$&
 hj	  
	#	#-	8	8 ##2237?DDF 
9 ||-n-HX 
9	8s   6AC..C>	tzUTCz
US/Pacificc           	      x   \         P                  ! R ^RR7      P                  V 4      P                  V4      p\         P                  ! RV/4      p\
        P                  ! RR7      ;_uu_ 4        \
        P                  ! V\        VP                  4       4      4       RRR4       R#   + '       g   i     R# ; i)z
2018-01-01D)periodsfreqts_tzr   r   N)
r    
date_rangetz_localizeas_unitr#   r$   r%   r3   r   r&   )r   unittz_datar5   s   &&  r8   test_datetimetzdtyper  t  s     	lAC8DDRHPPQUV  
w(	)B		#	#-	8	8
b.1A1A1C"DE 
9	8	8	8s   //B((B9	c           	         \         P                  ! R R4      p^ RIHp \	        4       '       dM   \        4       '       d=   \         P                  P                  VP                  RR7      pV P                  V4       VP                  \        R^^4      R\        R^^4      .4      pVP                  VR4      pVP                  RV/4      pVP                  4       p\        P                   ! RR	7      ;_uu_ 4        \#        V4      pRRR4       \$        P&                  ! . ROR.R
R7      p\        P(                  ! VX4       R#   + '       g   i     LE; i)r;   r<   Nz_TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.)r   reason  Asia/KathmandurK   r   r   zdatetime64[us, Asia/Kathmandu])r   r(   )z2020-01-01 00:00:00+05:45r   z2020-01-02 00:00:00+05:45)rE   rF   pyarrow.computecomputer   r   markxfailArrowInvalidapplymarkerrH   r   assume_timezonerG   r&   r$   r%   r   r    r#   r3   )	requestrJ   pcr  rK   rG   rL   rM   rN   s	   &        r8   )test_interchange_from_non_pandas_tz_awarer    s   			Y	1B !2!4!4{{  ??; ! 
 	D!
((HT1a($q!0DE
FC


S"2
3CHHeS\"E%%'K		#	#-	8	8, 
9 ||I.H
 (F+ 
9	8s   8EE	c                    V ^8  d   QhRR/# r   rm   )r   s   "r8   r   r     s     . .$ .rn   c                   aaa \         P                  ! R R7      ;_uu_ 4        \        P                  ! RRR./4      P	                  4       pVP	                  4       oRRR4       SP                  R4      oSP                  4       oSR,          pV^,          p\        P                  ^\        P                  V^,          3pV^ ,          V3SR&   V3R lSn        V3R lSn        V P                  XR	V3R
 l4       \         P                  ! R R7      ;_uu_ 4        \        P                  P                  P                  V4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r   r   r   foobarNr   c                     < S # r|   rm   )bufferss   r8   ro   ?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>  s    rn   c                    < S# r|   rm   )r   columns   &r8   ro   r     s    vrn   r&   c                    < S# r|   rm   )r   rS   s   &r8   ro   r     s    rn   )r$   r%   r    r#   r&   r'   r   r
   UINTr   UINT8setattrrR   rS   r   )monkeypatchr5   buffers_databuffer_dtyper  r"  rS   s   &   @@@r8   -test_interchange_from_corrected_buffer_dtypesr*    s   		#	#-	8	8\\3/0>>@&&( 
9 ++C0F  "G6?L?L	Q	L $A5GFO(F%5K"O-KL		#	#-	8	8
))"- 
9	8# 
9	8" 
9	8	8s   9E*E!E	!E2	c                  X   \         P                  ! R . /\        R7      p \        P                  ! RR7      ;_uu_ 4        V P                  4       p\         P                  P                  P                  V4      pRRR4       \        P                  ! V X4       R#   + '       g   i     L); i)r   r   r   r   N)
r    r#   strr$   r%   r&   rR   rS   r   r3   )r5   r   rM   s      r8   test_empty_string_columnr-    so    	sBis	+B		#	#-	8	8 ##2237 
9 "f% 
9	8s   :BB)	c                     \         P                  ! R 4       \        P                  ! RR./RR7      p \        P
                  ! RRR7      ;_uu_ 4        \        P                  P                  P                  V P                  4       4      pRRR4       \        P                  ! RR./R	R7      p\        P                  ! XV4       R#   + '       g   i     LD; i)
r;   r   r   large_string[pyarrow]r   r   FrZ   Nr,  )rE   rF   r    r#   r$   r%   rR   rS   r   r&   r3   )r5   rM   rN   s      r8   test_large_stringr0    s    
	"	sSEl*A	BB		#	#-%	P	P##2223C3C3EF 
Q||S3%L6H&(+ 
Q	Ps   8CC	c                     \         P                  ! . RO^ R7      P                  4       p \        P                  ! RR7      ;_uu_ 4        V P                  4       P                  4       pRRR4       XR.8X  g   Q hR#   + '       g   i     L; i)r   )r   r   r   N0r   rh      )r    r2   r   r$   r%   r&   r   )r5   r   s     r8   test_non_str_namesr5    s_    	91	%	.	.	0B		#	#-	8	8  "//1 
9SE>> 
9	8s   A;;B	c            	      &   \         P                  ! R . RO^ . RO/4      p \        P                  ! RR7      ;_uu_ 4        V P	                  4       pRRR4       \        P                  ! RR7      ;_uu_ 4        \
        P                  ! \        RR7      ;_uu_ 4        \         P                  P                  P                  XRR7       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     L-; i  + '       g   i     R# ; i)	r2  r   r   Na&  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   r3  r   r      )r    r#   r$   r%   r&   rE   r   	TypeErrorrR   rS   r   )r5   r   s     r8   test_non_str_names_w_duplicatesr:    s    	sIq)4	5B		#	#-	8	8  
9		#	#-	8	8]](	
 	
 FF--ce-D	
 
9	8 
9	8	
 	
 
9	8	8s/   C6%C?,C,	C?C)	,C<7C??D	Int64int64r   Int8r   zInt8[pyarrow]UInt64uint64zUInt64[pyarrow]Float32float32zFloat32[pyarrow]booleanboolzboolean[pyarrow])na_valuerY   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]c                @    V ^8  d   QhR\         R\        R\        RR/# rh   r   r(   expected_dtyper   Nr"   r,  )r   s   "r8   r   r     s,     % %
%%,/%	%rn   c                 X   \         P                  ! R R4      p^ RIHp VR8X  d   VP	                  RR4      p\
        P                  ! RV /VR7      p\        P                  ! RR	7      ;_uu_ 4        VP                  VP                  4       4      R,          pRRR4       XP                  V8X  g   Q hV^ ,          P                  4       V ^ ,          8X  g   Q hV^,          P                  4       V ^,          8X  g   Q hV^,          P                  4       e   Q hR#   + '       g   i     L; i
r;   r   NrF  usr  r   r   r   r   rE   rF   r   rS   	timestampr    r#   r$   r%   r   r&   typeas_pyr   r(   rI  rJ   pair5   rM   s   &&&    r8   (test_pandas_nullable_with_missing_valuesrT    s    b 
		Y	1B%;;d,<=	sDk	/B		#	#-	8	8##B$4$4$67< 
9;;.(((!9??Q'''!9??Q'''!9??$$$ 
9	8s   0'DD)	c                @    V ^8  d   QhR\         R\        R\        RR/# rH  rJ  )r   s   "r8   r   r   S  s,     ( (
((,/(	(rn   c                 l   \         P                  ! R R4      p^ RIHp VR8X  d   VP	                  RR4      p\
        P                  ! RV /VR7      p\        P                  ! RR	7      ;_uu_ 4        VP                  VP                  4       4      R,          pRRR4       XP                  V8X  g   Q hV^ ,          P                  4       V ^ ,          8X  g   Q hV^,          P                  4       V ^,          8X  g   Q hV^,          P                  4       V ^,          8X  g   Q hR#   + '       g   i     L; irL  rN  rR  s   &&&    r8   +test_pandas_nullable_without_missing_valuesrW  #  s    h 
		Y	1B%;;d,<=	sDk	/B		#	#-	8	8##B$4$4$67< 
9;;.(((!9??Q'''!9??Q'''!9??Q''' 
9	8s   0'D##D3	c                    V ^8  d   QhRR/# r   rm   )r   s   "r8   r   r   f  s      T rn   c                  T   \         P                  ! R R4       \        P                  ! RR./RR7      p \        P
                  ! RR7      ;_uu_ 4        V P                  4       P                  R4      P                  4       R,          pR	R	R	4       Xe   Q hR	#   + '       g   i     L; i)
r;   r<   r   r   r/  r   r   r   validityN)	rE   rF   r    r#   r$   r%   r&   r'   r   )r5   rM   s     r8   test_string_validity_bufferr[  f  sy    
	8,	sSEl*A	BB		#	#-	8	8!!#66s;GGI*U 
9>> 
9	8s   5BB'	c                    V ^8  d   QhRR/# r   rm   )r   s   "r8   r   r   o  s     	 	 	rn   c                     \         P                  ! R R4       \        P                  ! RRR./RR7      p \        P
                  ! RR7      ;_uu_ 4        V P                  4       P                  R4      P                  4       R	,          pRRR4       Xf   Q hV^,          p\        P                  ^\        P                  R
3pW#8X  g   Q hR#   + '       g   i     LK; i)r;   r<   r   r   Nr/  r   r   r   rZ  =)rE   rF   r    r#   r$   r%   r&   r'   r   r
   BOOLr   )r5   rZ  rM   rN   s       r8   &test_string_validity_buffer_no_missingr`  o  s    
	8,	sS$K(0G	HB		#	#-	8	8##%88=IIKJW 
9a[F;#3#3S9H 
9	8s   5CC	c                     \         P                  ! R . /RR7      p \        P                  ! RR7      ;_uu_ 4        V P	                  4       p\         P
                  P                  P                  VRR7      pRRR4       \         P                  ! R . /RR7      p\        P                  ! XV4       R#   + '       g   i     LC; i)r   r   r   r   r   Fr   N)	r    r#   r$   r%   r&   rR   rS   r   r3   )r5   r   rM   rN   s       r8   test_empty_dataframerb  {  s    	sBiv	.B		#	#-	8	8 ##22352I 
9 ||S"IV4H&(+	 
9	8s   <B11C	categoryr   cr^  |i  zM8[ns]ztsn:c          
          V ^8  d   QhR\         P                  R\        \        \        \
        \
        3,          R\        \        \        \
        \
        3,          RR/# )rh   r   rI  expected_buffer_dtyper   N)r    r2   r   r
   r   r,  )r   s   "r8   r   r     sV     A A
))A)S#s23A !Cc!9:A 
	Arn   c                 ^   \         P                  ! R V /4      p\        P                  ! RR7      ;_uu_ 4        VP	                  4       pRRR4       XP                  R 4      pVP                  V8X  g   Q hVP                  4       R ,          ^,          V8X  g   Q hR#   + '       g   i     L[; i)r   r   r   N)r    r#   r$   r%   r&   r'   r(   r   )r   rI  rg  r5   r   r6   s   &&&   r8   test_buffer_dtype_categoricalri    s    N 
vtn	%B		#	#-	8	8  
9

 
 
(C99&&&??V$Q'+@@@@	 
9	8s   BB,	c                      \         P                  ! R R4      p R^^.. RO./pV P                  V4      p\        V4      p\        P
                  ! V4      p\        P                  ! W44       R# )r;   r   r   Nr7  )rE   rF   rG   r   r    r#   r$   r3   )rJ   r   tblrM   rN   s        r8   test_from_dataframe_list_dtyperl    sZ    			Y	1B1a&)$%D
((4.CC F||D!H&+rn   )r   T)r   F)rc   rd   re   )r   r   r   )r   r   r   )r   rh   r   )TTF)r   r(   rI  r   )r         @N)TFN)much adoaboutNr3  )r   rm  g      @)TFF)rn  ro  nothing)r   rI  rg  r   )r   bcN)r   rh   r4  )Ir   r   numpyrT   rE   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  parametrizer9   rO   filterwarningsrW   r^   floatrf   r   r   rH   r   r   r   r   r   r   r   r   r   r   r  r  r*  r-  r0  r5  r:  StringDtyperU   utcrT  rW  r[  r`  rb  r2   r)   INTr   INT64r   r$  r%  FLOATFLOAT64ri  rl  rm   rn   r8   <module>r     s  
   $
   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 
	os$56	i/0-.)$+,	
@@@ A:F2 "sBi1
E 2
E	C922 |45F 6F,<..&,E& '	w(	'1	vv&	/	
 	

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

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

 
*+<nMdAq!8D!Q#7$19MN$	
 dAq!8D!Q#7$19MN$	
 q!HLL9q!HLL9q!HLL9
 5.	
G,/`(a/`(&	, 7 IIoZ8""AsC0]]AsC(	
 II$1%xa';XdAq=QR VS1]]B 1 137	
 II'(q+"4"4c:^^Q 1 137	
 IIi ]]B 1 137]]B 1 137	
 IIk"__b+"5"5s;__b+"5"5s;	
1 BAC BA,rn   