
    MhM                        S SK J r Jr  S SKrS SKrS SKJr  S SKJrJ	r	  S SK
Jr  S SKrS SKJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  \R4                  S
 5       r\R4                  S 5       r\R:                  R=                  SSS/5      S 5       rS r S r!S r"\R:                  R=                  SS SS\#" S5      S/4SS\#" S5      S/4SSS/4S SS\#" S5      /4S SS/4SS\#" S5      /4/5      S 5       r$\R:                  R=                  SS S S S S /5      S 5       r%S  r&\R:                  R=                  S/ S!Q/ S"QS#./ S$Q/ S"QS#.\RN                  " / S%Q5      \RN                  " / S$Q5      \RN                  " / S"Q5      S&./5      S' 5       r(S( r)S) r*S* r+S+ r,\R:                  R[                  \S,S-9S. 5       r.\R:                  R=                  S0 S// 0/5      S0 5       r/SlS2 jr0SlS3 jr1S4 r2\R:                  R=                  S5S6S7/5      \R:                  R=                  S8/ S9Q5      S: 5       5       r3S; r4SlS< jr5S= r6S> r7S? r8S@ r9\R:                  R=                  SA/ SBQSCSD4/ SBQSESD4/ SBQSFSG4/ SBQSHSG4/ SBQSISJ4/ SBQSKSJ4/ SLQSMSN4/ SLQSOSN4/ SPQSQSR4/ SPQSSSR4/ STQSUSV4/ STQSWSV4\ " SXSS5      \ " SXSS5      S/SYSZ4\ " SXSS5      \ " SXSS5      S/S[S\4\ " SXSS\Rt                  S]9\ " SXSS\Rt                  S]9S/S^S_4/5      S\;S`\<Sa\<S1S4Sb j5       r=\R:                  R=                  SA/ ScQSCSD4/ ScQSESD4/ ScQSFSG4/ ScQSHSG4/ ScQSISJ4/ ScQSKSJ4/ SdQSMSN4/ SdQSOSN4/ SeQSQSR4/ SeQSSSR4/ SfQSUSV4/ SfQSWSV4\ " SXSS5      \ " SXSS5      \ " SXSSg5      /SYSZ4\ " SXSS5      \ " SXSS5      \ " SXSSg5      /S[S\4\ " SXSS\Rt                  S]9\ " SXSS\Rt                  S]9\ " SXSSg\Rt                  S]9/S^S_4/5      S\;S`\<Sa\<S1S4Sh j5       r>SlSi jr?SlSj jr@Sk rAg)m    )datetimetimezoneN)iNaT)is_ci_environmentis_platform_windows)np_version_lt1p23)PandasColumn)ColumnNullType	DtypeKindfrom_dataframe)ArrowCTypesc                      [         R                  " [        S5      S-  SS9[         R                  " [        S5      S-  SS9S.$ )Ntestdata   T)orderedF)r   	unordered)pdCategoricallist     T/var/www/html/env/lib/python3.13/site-packages/pandas/tests/interchange/test_impl.pydata_categoricalr      s>     >>$z"2R"7F^^D$4r$95I r   c                  0    SSSSS[         R                  /0$ )Nseparator datazabC|DeF,Hikz234,3245.67zgSaf,qWer|Grez
asd3,4sad|)npnanr   r   r   string_datar   #   s)     	FF
 r   data)r   T)r   Fc                    [         R                  " SXS      05      nUR                  5       R                  S5      nUR                  S   [
        R                  :X  d   eUR                  S:X  d   eUR                  [        R                  S4:X  d   eUR                  5       S:X  d   eUR                  nUS   U S   :X  d   eUS   SL d   e[        US   [        5      (       d   e[        R                   " US   R"                  [         R$                  " / S	Q5      5        [        R&                  " U[)        UR                  5       5      5        g )
NAr      
is_orderedis_dictionaryT
categories)adest)r   	DataFrame__dataframe__get_column_by_namedtyper   CATEGORICAL
null_countdescribe_nullr
   USE_SENTINEL
num_chunksdescribe_categorical
isinstancer	   tmassert_series_equal_colSeriesassert_frame_equalr   )r    r   dfcoldesc_cats        r   test_categorical_dtyper@   0   s-   	s-1g68	9B




/
/
4C99Q<900000>>Q!<!<b AAAA>>q   ''HL!T!W,,,O$,,,h|,l;;;;##RYY/H%I "nR-=-=-?@Ar   c                  Z   [         R                  " SS5      n / SQnU R                  SU R                  U5      R	                  5       05      nUR                  5       n[        U5      n[        R                  " U/ SQS9n[        R                  " SU05      n[        R                  " XF5        g )Npyarrow11.0.0)	MonTuerD   WedrD   ThuFriSatSunweekday)rD   rE   rF   rG   rH   rI   rJ   )r'   )pytestimportorskiptablearraydictionary_encoder.   r   r   r   r-   r8   r<   )paarrrN   exchange_dfresultrK   expecteds          r   test_categorical_pyarrowrV   D   s    			Y	1B
ICHHi#!@!@!BCDE%%'KK(FnnIG ||Y01H&+r   c                     [         R                  " SS5      n S /nU R                  SU R                  US5      R	                  5       05      nUR                  5       n[        R                  R                  R                  U5      n[        R                  " S[        R                  " [        R                  /5      05      n[        R                  " XE5        g )NrB   rC   rR   float64)rL   rM   rN   rO   rP   r.   r   apiinterchanger   r-   r   r   r   r8   r<   rQ   rR   rN   rS   rT   rU   s         r   test_empty_categorical_pyarrowr\   S   s    			Y	1B&CHHeRXXc95GGIJKE%%'KVV..{;F||UBNNBFF8$<=>H&+r   c                     [         R                  " SS5      n SS/nU R                  SU R                  US5      05      nUR	                  5       n[        U5      n[        R                  " SSS/05      n[        R                  " XE5        U R                  R                  U R                  R                  U5      U5      (       d   eg )NrB   rC   rD   rE   rK   large_string)rL   rM   rN   rO   r.   r   r   r-   r8   r<   TableequalsrZ   r[   s         r   test_large_string_pyarrowra   _   s    			Y	1B%.CHHi#~!>?@E%%'KK(F||Y78H&+ 88??2>>88@%HHHHr   )offsetlengthexpected_valuesffffff
@r    @r$      c                    [         R                  " SS5      n/ SQnUR                  SU05      R                  X5      nUR	                  5       n[        U5      n[        R                  " SU05      n[        R                  " Xx5        UR                  R                  UR                  R                  U5      U5      (       d   eg )NrB   rC   )re   Nrf   rR   )rL   rM   rN   slicer.   r   r   r-   r8   r<   r_   r`   rZ   )	rb   rc   rd   rQ   rR   rN   rS   rT   rU   s	            r   test_bitmasks_pyarrowrj   n   s     
		Y	1B
CHHeS\"((8E%%'KK(F||UO45H&+ 88??2>>88@%HHHHr   c                  `    [         R                  R                  S5      R                  SS5      $ )Nrg   id   r   randomdefault_rngintegersr   r   r   <lambda>rq      s     		%%a(11$<r   c                  `    [         R                  R                  S5      R                  SS5      $ )Nrg   r$   rl   rm   r   r   r   rq   rq      s     		%%a(11!S9r   c                  \    [         R                  R                  S5      R                  5       $ )Nrg   )r   rn   ro   r   r   r   rq   rq      s    		%%a(//1r   c                  b    [         R                  R                  S5      R                  SS/5      $ )Nrg   TF)r   rn   ro   choicer   r   r   rq   rq      s"    		%%a(//u>r   c                  &   [        [        R                  R                  S5      R	                  SS5      [        R                  R                  S5      R	                  SS5      [        R                  R                  S5      R	                  SS5      S9$ )Nrg   il  i4  r$         )yearmonthday)r   r   rn   ro   rp   r   r   r   rq   rq      sf    &&q)224>))''*33Ar:		%%a(11!R8
r   c           
      0  ^  Su  p[        U5       VVs0 s H<  nS[        X1S-  -
  U-  S-   5       3[        U5       Vs/ s H
  nT " 5       PM     sn_M>     snnm [        R                  " T 5      nUR	                  5       nUR                  5       U:X  d   eUR                  5       U:X  d   e[        UR                  5       5      [        T R                  5       5      :X  d   eSn[        U 4S jU 5       5      n[        UR                  U5      5      n	[        UR                  U5      5      n
[        R                  " X5        [!        U	R"                  S   [        5      (       d   e[!        U
R"                  S   [        5      (       d   eg s  snf s  snnf )N)
   rx   r>   rg   r$   )r   rg   c              3   \   >#    U  H!  n[        TR                  5       5      U   v   M#     g 7fN)r   keys).0idxr    s     r   	<genexpr>!test_dataframe.<locals>.<genexpr>   s!     <GS$tyy{#C(Gs   ),_INTERCHANGE_PROTOCOL_BUFFERS)rangeintr   r-   r.   num_columnsnum_rowsr   column_namesr   tupler   select_columnsselect_columns_by_namer8   r<   r7   attrs)r    NCOLSNROWSi_r=   df2indicesnamesrT   rU   s   `          r   test_dataframer      sf    LE uA c1qy=E)A-./05<2P<a46<2PPD 
d	B



C??%%%<<>U"""  "#tDIIK'8888G<G<<EC..w78Fc88?@H&+fll#BCTJJJJhnn%DEtLLLL) 3Qs   +FFFFc            
      *   [         R                  " [        R                  " / SQ5      [        R                  " / SQ5      [        R                  " / SQ5      S.5      n [        R                  R                  S5      nU R                   Vs0 s H  o"UR                  S[        U 5      S9_M     nnUR                  5        HP  u  p$U R                  UR                  [        R                  " [        U 5      5      USS	9   nS U R                  XR4'   MR     U R                  5       nUR                  S
5      R                   US
   :X  d   eUR                  S5      R                   US   :X  d   eUR                  S5      R                   US   :X  d   eg s  snf )N)      ?       @g      @g      @        )      ?      @      @g      @r   )r   r   r   r   r   xyzrg   r   )lowhighF)sizereplacer   r   r   )r   r-   r   rO   rn   ro   columnsrp   lenitemsindexru   arangelocr.   r/   r2   )r=   rngr>   	dict_null	num_nullsnull_idxr   s          r   test_missing_from_maskedr      sO   	341234	

B ))


"CCE::N:Ccllqs2wl77:IN#//+88JJryyR)	5JI
 !%x}	 , 


C!!#&11Ys^CCC!!#&11Ys^CCC!!#&11Ys^CCC Os   
#F)r   r   r   )ffffff"@      %@皙'@)r   r   )r$   rg   r   )TTFr   c                     [         R                  " U 5      nUR                  5       nUR                   H$  nUR	                  U5      R
                  S:X  a  M$   e   g )Nr   )r   r-   r.   r   r/   r2   )r    r=   r   col_names       r   test_mixed_datar      sM     
d	B



CJJ%%h/::a??? r   c                  D   [         R                  " [        R                  " / SQ5      [        R                  " / SQ5      [        R                  " / SQ5      S.5      n U R	                  5       nU R
                   H$  nUR                  U5      R                  S:X  a  M$   e   g )N)TNFNT)Nrg   Nr$   rg   )r   r   Nr   Nr   rg   )r   r-   r   rO   r.   r   r/   r2   )r=   r   r   s      r   test_mixed_missingr      sy    	9:/078	

B 


CJJ%%h/::a??? r   c                    U S   S/-   n[         R                  " SU05      nUR                  5       R                  S5      nUR	                  5       S:X  d   eUR
                  S:X  d   eUR                  S   [        R                  :X  d   eUR                  [        R                  S4:X  d   eUSS  nUR                  5       R                  S5      nUR	                  5       S:X  d   eUR
                  S:X  d   eUR                  S   [        R                  :X  d   eUR                  [        R                  S4:X  d   eg )Nr    r"      r$   r      )r   r-   r.   r/   r   r2   r0   r   STRINGr3   r
   USE_BYTEMASK)r   test_str_datar=   r>   	df_sliceds        r   test_stringr      s"    01RD8M	sM*	+B




/
/
4C88:??>>Q99Q<9+++++!<!<a @@@@12I

!
!
#
6
6s
;C88:??>>Q99Q<9+++++!<!<a @@@@r   c                      [         R                  " S/ SQ05      n U R                  5       R                  S5      n[        R
                  " [        SS9   UR                    S S S 5        g ! , (       d  f       g = f)Nr"   )r(   r}   r   r   znot supported yetmatch)r   r-   r.   r/   rL   raisesNotImplementedErrorr0   r=   r>   s     r   test_nonstring_objectr      sS    	s./	0B




/
/
4C	*2E	F		 
G	F	Fs   A))
A7c                     [         R                  " S[         R                  " S5      [         R                  /05      n U R	                  5       R                  S5      nUR                  5       S:X  d   eUR                  S:X  d   eUR                  S   [        R                  :X  d   eUR                  [        R                  [        4:X  d   e[        R                   " U [#        U R	                  5       5      5        g )Nr"   z
2022-01-01rg   r$   r   )r   r-   	TimestampNaTr.   r/   r   r2   r0   r   DATETIMEr3   r
   r4   r   r8   r<   r   r   s     r   test_datetimer     s    	sR\\,7@A	BB




/
/
4C88:??>>Q99Q<9-----!<!<d CCCC"nR-=-=-?@Ar   zNumpy > 1.23 required)reasonc                  L   [         R                  " S[         R                  " / SQ5      05      n U R                  5       R	                  S5      n[
        R                  " UR                  5       S   S   5      n[
        R                  " / SQSS9n[        R                  " X#5        g )Nr"   )r(   br(   r    r   )r   r$   r   int8r0   )r   r-   r   r.   r/   r   from_dlpackget_buffersrO   r8   assert_numpy_array_equal)r=   r>   rT   rU   s       r    test_categorical_to_numpy_dlpackr     sv     
sBNN?;<	=B




/
/
4C^^COO-f5a89Fxx	0H1r   r(   c                     [         R                  " SS5        SSKJn  [        R
                  " U 5      nU" U5      n[        U5      n[        R                  " XB5        g )NrB   rC   r   r   )rL   rM   pyarrow.interchanger   r   r-   r8   r<   )r    pa_from_dataframerU   arrow_dfrT   s        r   test_empty_pyarrowr     sG     	8,G||D!H *HH%F&+r   returnc                  >   [         R                  " SS5      n U R                  / SQ/ SQ/5      nS/nU R                  U/US9n[         R                  " [
        SS9   [        R                  R                  R                  US	S
9  S S S 5        g ! , (       d  f       g = f)NrB   rC   )rg   rg      )r   r   rl   n_legs)r   zHTo join chunks a copy is required which is forbidden by allow_copy=Falser   F
allow_copy)
rL   rM   chunked_arrayrN   r   RuntimeErrorr   rY   rZ   r   )rQ   r   r   rN   s       r   test_multi_chunk_pyarrowr   &  s    			Y	1By+67FJEHHfXUH+E	(

 	))%E)B
 
 
s   )B
Bc                  Z   [         R                  " SS5        [        R                  " / SQSS9n [        R                  " X /SS9R                  S5      nUR                  5       n[         R                  " [        S	S
9   [        R                  R                  R                  UR                  SS95        S S S 5        [        R                  R                  R                  UR                  SS95      n[        R                  " S/ SQ0SS9n[        R                  " X45        [        R                  " X5        [!        US   R"                  R$                  R&                  5      S:X  d   e[!        US   R"                  R$                  R&                  5      S:X  d   eg ! , (       d  f       N= f)NrB   rC   r$   rg   NInt64[pyarrow]r   T)ignore_indexr(   z:Found multi-chunk pyarrow array, but `allow_copy` is Falser   Fr   )r   r   Nr   r   NrX   rg   )rL   rM   r   r;   concatto_framecopyr   r   rY   rZ   r   r.   r-   r8   r<   r   rO   	_pa_arraychunks)serr=   df_origrT   rU   s        r   test_multi_chunk_columnr   3  sE   
	8,
))L(8
9C	C:D	1	:	:3	?BggiG	X
 	))"*:*:e*:*LM
 VV..r/?/?4/?/PQF ||S"BC9UH&+ "&r#w}}&&--.!333ws|!!++223q888
 
s   =7F
F*c                  n   [         R                  " SS5        SSSSSSS.n [        R                  " [	        S	0 U D6/SSS9R                  5       nUR                  5       n[        R                  R                  R                  U5      S   R                  5       n[        R                  " S	0 U D6nX4:X  d   eg )
NrB   rC   i  r$   )ry   rz   r{   hourminutesecondtimestamp[ns][pyarrow]col0)r0   namer   )rL   rM   r   r;   r   r   r.   rY   rZ   r   itemr   )timestamp_argsr=   dfirT   rU   s        r   test_timestamp_ns_pyarrowr   H  s    
	8,N 
		#N	#$&
 hj	  


CVV..s3F;@@BF||-n-Hr   tzUTCz
US/Pacificunit)r+   msusnsc                     [         R                  " SSSS9R                  U 5      R                  U5      n[         R                  " SU05      n[
        R                  " U[        UR                  5       5      5        g )Nz
2018-01-01r   D)periodsfreqts_tz)	r   
date_rangetz_localizeas_unitr-   r8   r<   r   r.   )r   r   tz_datar=   s       r   test_datetimetzdtyper  `  sc    
 	lAC8DDRHPPQUV  
w(	)B"nR-=-=-?@Ar   c           	         [         R                  " SS5      nSS KJn  [	        5       (       aH  [        5       (       a9  [         R                  R                  UR                  SS9nU R                  U5        UR                  [        SSS5      S [        SSS5      /5      nUR                  US	5      nUR                  S
U05      nUR                  5       n[        U5      n[         R"                  " / SQS
/SS9n[$        R&                  " X5        g )NrB   rC   r   z_TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.)r   r     r$   rg   Asia/KathmandurR   )z2020-01-01 00:00:00+05:45r   z2020-01-02 00:00:00+05:45zdatetime64[us, Asia/Kathmandu])r   r0   )rL   rM   pyarrow.computecomputer   r   markxfailArrowInvalidapplymarkerrO   r   assume_timezonerN   r.   r   r   r-   r8   r<   )	requestrQ   pcr  rR   rN   rS   rT   rU   s	            r   )test_interchange_from_non_pandas_tz_awarer  k  s    			Y	1B !2!4!4{{  ??; ! 
 	D!
((HT1a($q!0DE
FC


S"2
3CHHeS\"E%%'KK(F||I.H
 (+r   c                   ^^^ [         R                  " SSS/05      R                  5       nUR                  5       mTR                  S5      mTR	                  5       mTS   nUS   n[
        R                  S[        R                  US   4nUS   U4TS'   U4S	 jTl        U4S
 jTl        U R                  USU4S j5        [         R                  R                  R                  U5        g )Nr(   foobarr    r$         r   c                     > T $ r   r   )bufferss   r   rq   ?test_interchange_from_corrected_buffer_dtypes.<locals>.<lambda>  s    r   c                    > T$ r   r   )r   columns    r   rq   r     s    vr   r.   c                    > T$ r   r   )r   rZ   s    r   rq   r     s    r   )r   r-   r.   r/   r   r   UINTr   UINT8setattrrY   rZ   r   )monkeypatchr=   buffers_databuffer_dtyper  r"  rZ   s       @@@r   -test_interchange_from_corrected_buffer_dtypesr*    s    	sUEN+	,	:	:	<B""$K++C0F  "G6?L?L	Q	L $A5GFO(F%5K"O-KLFF%%b)r   c                      [         R                  " S/ 0[        S9n U R                  5       n[         R                  R
                  R                  U5      n[        R                  " X5        g )Nr(   r   )	r   r-   strr.   rY   rZ   r   r8   r<   )r=   r   rT   s      r   test_empty_string_columnr-    sL    	sBis	+B



CVV..s3F"%r   c                  *   [         R                  " S5        [        R                  " SS/0SS9n [        R                  R
                  R                  U R                  5       5      n[        R                  " SS/0SS9n[        R                  " X5        g )NrB   r(   r   large_string[pyarrow]r   object)
rL   rM   r   r-   rY   rZ   r   r.   r8   r<   )r=   rT   rU   s      r   test_large_stringr1    sn    
	"	sSEl*A	BBVV..r/?/?/ABF||S3%L9H&+r   c                      [         R                  " / SQSS9R                  5       n U R                  5       R	                  5       nUS/:X  d   eg )Nr$   rg   r  r   )r   0)r   r;   r   r.   r   )r=   r   s     r   test_non_str_namesr5    s@    	91	%	.	.	0B++-ESE>>r   c                     [         R                  " / SQ/ SQS.5      n U R                  5       n[        R                  " [
        SS9   [         R                  R                  R                  USS9  S S S 5        g ! , (       d  f       g = f)Nr3  )r   r   r   )r4  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='object'\). Please rename these columns before using the interchange protocol.r   Fr   )	r   r-   r.   rL   r   	TypeErrorrY   rZ   r   )r=   r   s     r   test_non_str_names_w_duplicatesr8    sf    	I)4	5B



C	$	
 	))#%)@	
 	
 	
s   )A99
B)r    r0   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aboutNzstring[pyarrow_numpy]r^   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]r0   r9  c                    [         R                  " SS5      nSS KJn  US:X  a  UR	                  SS5      n[
        R                  " SU 0US9nUR                  UR                  5       5      S   nUR                  U:X  d   eUS   R                  5       U S   :X  d   eUS	   R                  5       U S	   :X  d   eUS
   R                  5       b   eg NrB   rC   r   rG  r   r  r(   r   r$   rg   rL   rM   r   rZ   	timestampr   r-   r   r.   typeas_pyr    r0   r9  rQ   pair=   rT   s          r   (test_pandas_nullable_with_missing_valuesrP    s    b 
		Y	1B%;;d,<=	sDk	/B 0 0 23C8F;;.(((!9??Q'''!9??Q'''!9??$$$r   r3  )r   r?  g      @)TFF)rD  rE  nothingr  c                    [         R                  " SS5      nSS KJn  US:X  a  UR	                  SS5      n[
        R                  " SU 0US9nUR                  UR                  5       5      S   nUR                  U:X  d   eUS   R                  5       U S   :X  d   eUS	   R                  5       U S	   :X  d   eUS
   R                  5       U S
   :X  d   eg rI  rJ  rN  s          r   +test_pandas_nullable_without_missing_valuesrS    s    ` 
		Y	1B%;;d,<=	sDk	/B 0 0 23C8F;;.(((!9??Q'''!9??Q'''!9??Q'''r   c                      [         R                  " SS5        [        R                  " SS/0SS9n U R	                  5       R                  S5      R                  5       S   nUb   eg )NrB   rC   r(   r   r/  r   validity)rL   rM   r   r-   r.   r/   r   )r=   rT   s     r   test_string_validity_bufferrV  C  sZ    
	8,	sSEl*A	BB2237CCEjQF>>r   c                  *   [         R                  " SS5        [        R                  " SSS /0SS9n U R	                  5       R                  S5      R                  5       S   nUc   eUS   n[        R                  S[        R                  S	4nX#:X  d   eg )
NrB   rC   r(   r   r/  r   rU  r$   =)
rL   rM   r   r-   r.   r/   r   r   BOOLr   )r=   rU  rT   rU   s       r   &test_string_validity_buffer_no_missingrZ  K  s    
	8,	sS$K(0G	HB!44S9EEG
SHa[F;#3#3S9Hr   c                      [         R                  " S/ 0SS9n U R                  5       n[         R                  R                  R                  USS9n[         R                  " S/ 0SS9n[        R                  " X#5        g )Nr(   r   r   Fr   )r   r-   r.   rY   rZ   r   r8   r<   )r=   r   rT   rU   s       r   test_empty_dataframer\  V  se    	sBiv	.B



CVV..su.EF||S"IV4H&+r   )r   N)Br   r   numpyr   rL   pandas._libs.tslibsr   pandas.compatr   r   pandas.compat.numpyr   pandasr   pandas._testing_testingr8   pandas.core.interchange.columnr	   *pandas.core.interchange.dataframe_protocolr
   r   &pandas.core.interchange.from_dataframer   pandas.core.interchange.utilsr   fixturer   r   r  parametrizer@   rV   r\   ra   floatrj   r   r   rO   r   r   r   r   r   skipifr   r   r   r   r   r  r  r*  r-  r1  r5  r8  utcr   r,  rP  rS  rV  rZ  r\  r   r   r   <module>rm     s  
   $ 2   7 B 5   	 	 "35I!JKB LB&,	,I +	
D3ec*+	
D5<%&	
D3%	
AU5\"#	
Au	
Ae~
I
I 
<91>	

MM4D0 
$56/0-.)$+,	
@@@A$	B %.EF2 G2 "sBi1, 2,
C9*0 |45!89B : 6B,:**&,A" '	w(	'1	vv&	/	
 	

 
Iy1	.	:	i0	0&9	$&=~N	$&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:	)+BNS	)+<nMdAq!8D!Q#7$19MN$	
 dAq!8D!Q#7$19MN$	
 q!HLL9q!HLL9q!HLL9
 5.	
?(+X(
((,/(	(Y+X($,r   