
    o[we                    $   d Z ddlmZ ddlmZmZmZmZ ddlmZ ddl	m
Z
mZ ddlZddlZddlZddlZddlZddlmZ ddlmZ dd	lmZmZmZmZmZmZmZmZmZ dd
l m!Z!m"Z" ddl#Z$ddl%m&Z' ddl(m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3  ej4        dd          Z5ddl6m7Z7 ddl8m9Z9 d Z: ej;        e'j<        e=          d             Z>ej;        d             Z?ej;        d             Z@ ej;        ddg          d             ZAej;        d             ZBej;        d             ZCej;        d             ZDej;        d             ZE G d  d!e3jF                  ZG G d" d#e3jH                  ZI G d$ d%e3jJ                  ZK G d& d'e3jL                  ZM G d( d)e3jN                  ZO G d* d+e3jP                  ZQ G d, d-e3jR                  ZS G d. d/e3jT                  ZU G d0 d1e3jV                  ZW G d2 d3e3jX                  ZY G d4 d5e3jZ                  Z[ G d6 d7e3j\                  Z] G d8 d9e3j^                  Z_ G d: d;e3j`                  Za G d< d=e3jb                  Zc G d> d?e3jd                  Ze G d@ dAe3jf                  Zg G dB dCe3jh                  Zi G dD dE          Zjejk        l                    dFe'jm                  dG             ZndH ZodI ZpdJ Zqejk        l                    dKg dL          ejk        l                    dMdNdNdNgg          dO                         Zrejk        l                    dPg dQdRdggg dSdgggdTdUgV          dW             ZsdX Ztejk        l                    dYe5u                                evge5u                    dZ          evge5w                                evge5x                                e=ge5y                    e5z                                          e{ge5|                    e5z                                          e{ge5}                    e5~                                e5z                                          e{ge5                    d[e5                                fd\e5~                                fg          ege5                    e5z                                e5z                                          e"gg	          d]             Zd^ Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zejk        l                    diej)        ej        fdjg          dk             Zdl Zdm Zdn Zejk                            edop          dq             Zejk                            edrp          ds             Zdt Zdu Zdv Zejk        l                    dwdxdyg          dz             Zd{ Zejk        l                    d|d}d~gddgddgg          d             Zd Zejk        l                    dddddddggddddddggddddddggddddddggddddddggg          d             Zd Zejk        l                    ddddddggdddddggdddddggdddddggg          d             Zejk        l                    ddw ej        d          gde=gddgddgg          d             Zejk        l                    dddddddggddddddggddddddggg          d             Zd Zejk                            ede          d             Zejk        l                    ddddddggdddddggdddddggdddddggdddddggdddddggg          d             Zejk        l                    ddxddddggdddddggdddddggdddddggdyddddggdddddggg          d             Zejk        l                    ddddddge5                                gdddddge5z                                gg          d             Zd Zejk        l                    ddg dgdg dgdg dgdg dgdRg dgg          d             Zejk                            de          d             Zd Zejk        l                    ddddddggdddddggdddddggg          d             Zejk        l                    ddddddggdddddggdddddggg          d             Zejk        l                    dg dâg dĢg dŢg dƢg dǢg dȢg dɢg dʢg dˢg d̢g d͢g d΢g dϢg dТg dѢg dҢg dӢg dԢg          dՄ             Zejk        l                    dddgddgddgddgddgddgg          d             Zd Zejk        l                    dg dg dg dg dg dg dg          d             Zejk        l                    dddxg          d             Zejk        l                    dddxg          d             Zejk        l                    dddg          ejk        l                    dddgddgg          d                         Zejk        l                    dddg          d             Zejk        l                    dddg          ejk        l                    dddgddRgg          d                         Zejk        l                    d ddg          d             Zejk        l                    dddgddRgg          d             Zd Zd Zd Zd Zejk        l                    dd	d
g          d             Zd ZÐd ZĐd Zejk        l                    dg d          d             ZƐd Zejk        l                    dddgddgddgddgddgddgddgddgddRg ej        ddejk                            eed           !          d"d#gd$dgd%d&gd'dgd(d)gd* eddd          gd+ eddRd)d#          gg          d,             Zɐd- Zʐd. Zːd/ Zejk        l                    dd0d1g          d2             Z͐d3 Zejk        l                    dd4d5g          d6             Zejk        l                    d7g d8          d9             ZАd: Zejk        l                    d֐d;d<gd=d>gg          d?             ZҐd@ Zejk        l                    dg dA          dB             Zejk        l                    dg dA          dC             Zejk                            edDp          ejk        l                    dEg dF          ejk        l                    dg dA          dG                                     Z֐dH Zejk        l                    dIdJdKg          dL             ZؐdM ZِdN Zejk        l                    dd4d5g          dO             Zejk        l                    dPdQ edddRdS          gdT e$j        dU          gg          dV             ZݐdW ZސdX Zejk        l                    dd4d5g          dY             Zejk        l                    dZddg          d[             Zd\ Zd] Zejk        l                    d^d_d`g          da             Z G db dce7          Zdd Zde Zejk        l                    dfdgdhge5w                                fddge5x                                fg          di             Zdj Zejk        l                    dFe'jm        e'j        z             dk             Zejk        l                    dFe'j                  dl             Zejk        l                    dFe'j                  dm             Zejk        l                    dFe'j        e'j        z             dn             Zdo Zejk                            edpe5j                  dq             Zdr Zejk        l                    dFe'j        e'j        z             ds             Zejk        l                    dFe'j        e'j        z             dt             Zejk        l                    dFe'j        e'j        z             du             Zejk        l                    dFe'j        e'j        z             dv             Zejk        l                    dFe'j        e'j        z             dw             Zejk        l                    dFe'j        e'j        z             dx             Zdy Zejk        l                    dFe'j        e'j        z             dz             Zd{ Zd| Zd} Zejk        l                    dFe'j                  d~             Z d Zd Zd Zd ZdS (  ag  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.
The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).
Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.
    )annotations)datedatetimetime	timedelta)Decimal)BytesIOStringION)lib)	timezones)	PY311is_ci_environmentis_platform_windowspa_version_under7p0pa_version_under8p0pa_version_under9p0pa_version_under11p0pa_version_under13p0pa_version_under14p0)
ArrowDtypeCategoricalDtypeType)
no_default)is_bool_dtypeis_float_dtypeis_integer_dtypeis_numeric_dtypeis_signed_integer_dtypeis_string_dtypeis_unsigned_integer_dtype)basepyarrowz7.0.0)
minversion)ArrowExtensionArray)ArrowPeriodTypec                    t                      rUt                      rIt          j                            t
          j        d          }| j                            |           d S d S d S )Nz_TODO: Set ARROW_TIMEZONE_DATABASE environment variable on CI to path to the tzdata for pyarrow.raisesreason)	r   r   pytestmarkxfailpaArrowInvalidnode
add_marker)requestr*   s     Alib/python3.11/site-packages/pandas/tests/extension/test_arrow.py_require_timezone_databaser2   H   sv     &!2!4!4 &{  ?; ! 
 
 	%%%%%& & & &    )paramsidsc                ,    t          | j                  S )N)pyarrow_dtype)r   param)r0   s    r1   dtyper9   T   s    GM2222r3   c           
        | j         }t          j                            |          rddgdz  d gz   ddgdz  z   d gz   ddgz   }nt          j                            |          rddgdz  d gz   ddgdz  z   d gz   d	d
gz   }nt          j                            |          rddgdz  d gz   ddgdz  z   d gz   ddgz   }nt          j                            |          rddgdz  d gz   ddgdz  z   d gz   ddgz   }n^t          j                            |          rlt          d          t          d          gdz  d gz   t          d          t          d          gdz  z   d gz   t          d          t          d          gz   }nt          j        	                    |          rxt          ddd          t          ddd          gdz  d gz   t          ddd          t          ddd          gdz  z   d gz   t          ddd          t          ddd          gz   }n<t          j                            |          rt          ddddddd          t          ddddddd          gdz  d gz   t          dddd          t          dddd          gdz  z   d gz   t          ddd          t          ddd          gz   }nt          j                            |          rmt          d          t          dd          gdz  d gz   t          d          t          d          gdz  z   d gz   t          d          t          d          gz   }nt          j                            |          rqt!          dd          t!          dd          gdz  d gz   t!          dd          t!          dd          gdz  z   d gz   t!          dd          t!          dd          gz   }nt          j                            |          rdd gdz  d gz   dd!gdz  z   d gz   d"d#gz   }nCt          j                            |          rd$d%gdz  d gz   d&d'gdz  z   d gz   d(d)gz   }nt&          t)          j        || *          S )+NTF   ,         ?        g       g            ?g     X@   r   c      10.0z-2.0z-1.0z0.5z33.123            i
      ab2!>   a   b   1   2   !   >r9   )r7   r,   types
is_booleanis_floatingis_signed_integeris_unsigned_integer
is_decimalr   is_dater   is_timestampr   is_durationr   is_timer   	is_string	is_binaryNotImplementedErrorpdarray)r9   pa_dtypedatas      r1   rj   rj   Y   s   "H	x8$$ 5"e}q D6)T5MB,>>$G4QV-W			h	'	' 3"SzA~&$)::dVCsDkQ		#	#H	-	- 1"1vzTF"b"X]2dV;q"gE		%	%h	/	/ /"1vzTF"aVb[0D69QGC			X	&	& -"S\\75>>*Q.fv0256 f u~~wx001	2 	 
		(	#	# %"$1tD"b112Q6fD!QdAq!1!12R78 f D"b!!4b"#5#56	7 	 
		x	(	( "dAq!Q1--xaAq!Q/O/OPSTTfaA&&q!Q(?(?@2EF f a##XdAq%9%9:	; 	 
		h	'	' "q\\9Q??+a/f}}ill+b01 f ~~y}}-	. 	 
		(	#	# ""a[[$q"++&*fAqzz41::&+, f Aqzz41::&	' 	 
		H	%	% "SzA~&#sb8D6AS#JN			H	%	% "d|a4&(D$<"+<<vEtT!!8D&&&&r3   c                d    t          |                               d| d         g| j                  S )zLength-2 array with [NA, Valid]Nr   rY   type_from_sequencer9   )rj   s    r1   data_missingro      s-     ::$$dDG_DJ$GGGr3   rj   ro   )r4   c                :    | j         dk    r|S | j         dk    r|S dS )zParametrized fixture returning 'data' or 'data_missing' integer arrays.

    Used to test dtype conversion with and without missing values.
    rj   ro   N)r8   )r0   rj   ro   s      r1   all_datarq      s1     }	.	(	( 
)	(r3   c           
     Z   | j         }t          j                            |          rd}d}d}n`t          j                            |          rd}d}d}n9t          j                            |          rd}d}d}nt          j                            |          rd}d}d	}nt          j                            |          r5t          d
dd          }t          ddd          }t          ddd          }nt          j        	                    |          r:t          d
dddddd          }t          ddd          }t          dddd          }n>t          j                            |          r/t          d          }t          d          }t          dd          }nt          j                            |          r1t          dd          }t          dd          }t          dd          }nt          j                            |          rd}d}d}nzt          j                            |          rd}d}d}nTt          j                            |          r.t%          d          }t%          d          }t%          d          }nt&          t)          j        ||dd||||g|           S )z
    Data for factorization, grouping, and unique tests.

    Expected to be like [B, B, NA, NA, A, A, B, C]

    Where A < B < C and NA is missing
    FTgr>   g?rB   r   r@   rL   rH   rI   rJ   i  rG   rK   r;   rN   rO   crS   rT      cz-1.1rF   z1.1NrY   )r7   r,   rZ   r[   r\   r]   r^   r`   r   ra   r   rb   r   rc   r   rd   re   r_   r   rf   rg   rh   )r9   ri   ABCs        r1   data_for_groupingrx      s    "H	x8$$ -"			h	'	' )"		#	#H	-	- %"		%	%h	/	/ !"			(	#	# "r2q!q!			x	(	( "T1aAq!,,T1a  T1a##			h	'	' "bMMaLLaOO			(	#	# "AJJBKKRLL			H	%	% "			H	%	% 	"			X	&	& "FOOENNENN!!8Q4q!Q2%@@@@r3   c                ~    t          |                               | d         | d         | d         g| j                  S )zn
    Length-3 array with a known sort order.

    This should be three items [B, C, A] with
    A < B < C
    r      r;   rY   rl   rx   s    r1   data_for_sortingr|      K     !""11	1	035Fq5IJ% 2   r3   c                ~    t          |                               | d         | d         | d         g| j                  S )z{
    Length-3 array with a known sort order.

    This should be three items [B, NA, A] with
    A < B and NA missing.
    r   rD   r;   rY   rl   r{   s    r1   data_missing_for_sortingr      r}   r3   c                T   | j         j        }t          j                            |          s]t          j                            |          s>t          j                            |          st          j                            |          rt          j	        dgdz  | j                   S | S )z3Length-100 array in which all the elements are two.rD   d   rY   )
r9   r7   r,   rZ   
is_integerr\   r_   rb   rg   rh   rj   ri   s     r1   data_for_twosr      s     z'H
H%%58))5 8x((5 8))	5 xc	4444Kr3   c                       e Zd Z fdZ xZS )TestBaseCastingc                   |j         j        }t          j                            |          r<|j                            t          j        	                    d| d                     t                                          |           d S )NzFor z .astype(str) decodes.r(   )r9   r7   r,   rZ   re   r.   r/   r)   r*   r+   supertest_astype_strselfrj   r0   ri   	__class__s       r1   r   zTestBaseCasting.test_astype_str  s    :+8h'' 	L##!!B(BBB "    
 	%%%%%r3   )__name__
__module____qualname__r   __classcell__r   s   @r1   r   r     s8        & & & & & & & & &r3   r   c                  0     e Zd Z fdZd Zd Zd Z xZS )TestConstructorsc                   |j         j        }t          j                            |          st          j                            |          r_t          j                            |          rd}nd| }|j                            t          j	        
                    |                     t                                          |           d S )Nz1ArrowDtype(pa.string()) != StringDtype('pyarrow')$pyarrow.type_for_alias cannot infer r   )r9   r7   r,   rZ   rd   r_   r.   r/   r)   r*   r+   r   test_from_dtype)r   rj   r0   ri   r(   r   s        r1   r   z TestConstructors.test_from_dtype  s    :+8h'' 
	28+>+>x+H+H 
	x!!(++ KLJJJL##!!! "    
 	%%%%%r3   c                   t          |                              |j                  }t          j        ||           t          |j        t          j                  sJ t          |                              |j                                                  }t          j        ||           t          |j        t          j                  sJ d S N)	rm   rn   	_pa_arraytmassert_extension_array_equal
isinstancer,   ChunkedArraycombine_chunksr   rj   results      r1   test_from_sequence_pa_arrayz,TestConstructors.test_from_sequence_pa_array*  s     d**4>::
'555&*BO<<<<<d**4>+H+H+J+JKK
'555&*BO<<<<<<<r3   c                    t          j        t          d          5  t          j        dgt
                                                     d d d            d S # 1 swxY w Y   d S )NzConverting strings tomatchz12-1rY   )r)   r'   rf   r#   _from_sequence_of_stringsr,   month_day_nano_interval)r   r0   s     r1   *test_from_sequence_pa_array_notimplementedz;TestConstructors.test_from_sequence_pa_array_notimplemented5  s    ].6MNNN 	 	9 : : < <   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /AAAc                
   |j         j        }t          j                            |          rU|                    d          r@t          s9|j                            t          j
                            d                     nt          rt          j                            |          st          j                            |          rG|j                            t          j
                            t          j        d|                      n5t          j                            |          r|j        t%          |           |j                            t                                                    }t-          |                              ||j                   }t1          j        ||           |                                }t-          |                              ||j                   }t1          j        ||           d S )Nz
time64[ns]z&Nanosecond time parsing not supported.r   z pyarrow doesn't support parsing r&   rY   )r9   r7   r,   rZ   	is_time64equalsr   r.   r/   r)   r*   r+   r   rb   r_   ArrowNotImplementedErrorra   tzr2   r   caststringrm   r   r   r   r   )r   rj   r0   ri   pa_arrayr   s         r1   &test_from_sequence_of_strings_pa_arrayz7TestConstructors.test_from_sequence_of_strings_pa_array;  s   :+8h'' 	0HOOL,I,I 	0RW 	0L##!!C "     
 " 
	0H  **
	0.0h.A.A(.K.K
	0 L##!!6HhHH "      X""8,, 	01H&w///>&&ryy{{33d55hdj5QQ
'555**,,d55hdj5QQ
'55555r3   )r   r   r   r   r   r   r   r   r   s   @r1   r   r     se        & & & & &	= 	= 	=  6 6 6 6 6 6 6r3   r   c                      e Zd ZdS )TestGetitemTestsNr   r   r    r3   r1   r   r   X          Dr3   r   c                  r     e Zd Zd ZddZej                            d	d
dg           fd            Z xZ	S )TestBaseAccumulateTestsc                    t          ||          |          }|j        j        }t          j                            |          r:|j        dk    rd}nd}|                    |          }|                    |          }|                    d          } t          |                    d          |          |          }t          j	        ||d           d S )Nskipna    zint32[pyarrow]int64[pyarrow]Float64F)check_dtype)
getattrr9   r7   r,   rZ   is_temporal	bit_widthastyper   assert_series_equal)r   serop_namer   r   pa_typeint_typeexpecteds           r1   check_accumulatez(TestBaseAccumulateTests.check_accumulate]  s    &g&&f555))8(( 	- B&&++**X&&C]]8,,Fy)):73::i00'::&III
vxUCCCCCCr3   r   	pd.Seriesr   strreturnboolc                   |j         j        }t          j                            |          s>t          j                            |          st          j                            |          r|dv rdS ntt          j                            |          r|dv rdS nNt          j                            |          r/|dk    r!t          j        	                    |          sdS |dk    rdS dS )N)cumsumcumprodcummaxcumminF)r   r   r   r   r   T)
r9   r7   r,   rZ   rd   re   r_   r[   r   rb   )r   r   r   r   s       r1   _supports_accumulationz.TestBaseAccumulateTests._supports_accumulationn  s     )) Hw''	x!!'**	 x""7++	
 CCCu DX  )) 	999u :X!!'** 	(""28+?+?+H+H"uI%%utr3   r   TFc                   |j         j        }|}t          j        |          }|                     ||          s#t                                          |||          S t          st          rw|dk    rq|j	        j
        }|j        r d|j        v rt          j        | d           t          j                            | d          }	|j                            |	           n|dk    rt$          j                            |          st$          j                            |          rC|j                            t          j                            | d| t,                               |                     |||           d S )Nr   znot slowz  not implemented for pyarrow < 9r   z not implemented for r(   r'   )r9   r7   rg   Seriesr   r   test_accumulate_seriesr   r   configoptionmarkexprr)   skipr*   r+   r.   r/   r,   rZ   r[   r_   rf   r   )r   rj   all_numeric_accumulationsr   r0   r   r   r   optr*   r   s             r1   r   z.TestBaseAccumulateTests.test_accumulate_series  s   **+ioo**388 	7711/    	 	%>(%J%J .'C| 
cl : :0RRR   ;$$3UUU %  D L##D))))&(22H(( 3,.H,?,?,H,H 3 L##!!7WWgWW. "     	c7F33333r3   )r   r   r   r   r   r   )
r   r   r   r   r   r)   r*   parametrizer   r   r   s   @r1   r   r   \  s        D D D"   , [Xe}55$4 $4 $4 $4 65$4 $4 $4 $4 $4r3   r   c                  f    e Zd ZddZd Zej                            ddd	g           fd
            Zej                            ddd	g           fd            Z	ddZ
ej                            ddd	g           fd            Zej                            dg d          d             Z xZS )
TestReducer   r   r   r   c                   t          j        |          }|j        }t          j                            |          r*|dv r&t          j                            |          r|dv rnFdS t          j                            |          st          j                            |          r|dv rdS t          j                            |          r%t          j                            |          s|dv rdS dS )N)sumvarskewkurtprod)r   F)	r   meanmedianr   stdsemr   r   r   )anyallT)	r   	get_dtyper7   r,   rZ   r   rb   rd   re   )r   objr   r9   ri   s        r1   _supports_reductionzTestReduce._supports_reduction  s   S!! &8)) 	g :
 /
 /
 x##H-- 'W2D2DuHx((	,.H,>,>x,H,H	 

 

 

 5 H  **	H((22	 >))
 5tr3   c                   |j         j        }|dk    r t          ||                      }n t          ||          |          }t          j                            |          st          j                            |          r|                    d          }|dk    r t          ||                      }n t          ||          |          }t          j	        ||           d S )Ncountr   r   )
r9   r7   r   r,   rZ   r   r\   r   r   assert_almost_equal)r   r   r   r   ri   r   r   s          r1   check_reducezTestReduce.check_reduce  s    9*g*WS'**,,FF*WS'**&999F8x(( 	(BH,@,@,J,J 	(**Y''Cg,wsG,,..HH,wsG,,F;;;H
vx00000r3   r   TFc                   |j         }|j        }t          j                            t
          | dt          j         d|           }|dv r-|j        s|j	        dk    r|j
                            |           n|dv rAt          r:t          j                            |          r|j
                            |           n|dk    rHt          rA|j        st          j                            |          r|j
                            |           n=t          j                            |          r|dv r|j
                            |           t%                                          |||           d S )	N is not implemented in pyarrow= for r&   >   r   r   rO   >   r   r   r   r   >   r   r   r   r   )r9   r7   r)   r*   r+   	TypeErrorr,   __version___is_numerickindr.   r/   r   rZ   r_   r   r   r[   r   test_reduce_series_numeric)	r   rj   all_numeric_reductionsr   r0   r9   ri   
xfail_markr   s	           r1   r   z%TestReduce.test_reduce_series_numeric  s   
&[&&) ; ;>; ;08; ; ' 
 

 "%555 6!&s!2!2L##J////"&>>># ?##H-- ? L##J////"e++# ," ,&(h&:&:8&D&D , L##J////X  ** 	0/E J
 0
 0
 L##J///**41GPPPPPr3   c                   |j         j        }t          j                            t
          | dt          j         d|           }t          j        	                    |          st          j        
                    |          r|j                            |           t                                          |||          S )Nr   r   r&   )r9   r7   r)   r*   r+   r   r,   r   rZ   rd   re   r.   r/   r   test_reduce_series_boolean)	r   rj   all_boolean_reductionsr   na_valuer0   ri   r   r   s	           r1   r   z%TestReduce.test_reduce_series_boolean  s     :+[&&) ; ;>; ;08; ; ' 
 

 8h'' 	028+=+=h+G+G 	0 L##J///ww11$8NPVWWWr3   c                    |dv r|j         }n<|j         j        dk    r|dvr|j         }n d}n|dv rd}ndddd|j         j                 }|S )	N)maxminzdecimal128(7, 3)[pyarrow])r   r   r   float64[pyarrow])r   r   r   r   r   r   uint64[pyarrow])iuf)r9   namer   )r   arrr   r   	cmp_dtypes        r1   _get_expected_reduction_dtypez(TestReduce._get_expected_reduction_dtype"  s    n$$	IIY^:::666I		.		@@@*II &&'  in	I
 r3   c                    |}|dk    rF|j         j        r:t          j                            d          }|j                            |           t                                          |||          S )Nr   zskew not implementedr   )	r9   r   r)   r*   r+   r.   r/   r   test_reduce_frame)r   rj   r   r   r0   r   r*   r   s          r1   r  zTestReduce.test_reduce_frame4  sl    (fz% .{((0F(GG''---ww((/EvNNNr3   typ)int64uint64float64c                p    t          j        ddg| d                                          }|dk    sJ d S )Nr@   rD   	[pyarrow]rY         ?)rg   r   r   )r   r  r   s      r1   test_median_not_approximatez&TestReduce.test_median_not_approximate=  sB     Aq6C):):):;;;BBDD}}}}}}r3   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r)   r*   r   r   r   r  r  r  r   r   s   @r1   r   r     sQ       * * * *X1 1 1  [Xe}55#Q #Q #Q #Q 65#QJ [Xe}55X X X X 65X$   $ [Xe}55O O O O 65O [U$B$B$BCC  DC    r3   r   c                       e Zd Z fdZ xZS )TestBaseGroupbyc                D   |j         }t          |          rt          j        g d|g dd          }t          j        dg          }t          j        d|           }t          j        t          |          5  |
                    d                                           d d d            n# 1 swxY w Y   |
                    d                              d	          j        }t          j        ||           d S t                                          |           d S )
N)r@   r@   rD   rD      r  r@   r;   )r@   r@   r@   r@   r@   r@   r@   r@   ru   rv   rw   rw   z%agg function failed [how->sum,dtype->r   ru   T)numeric_only)r9   r   rg   	DataFrameIndexreescaper)   r'   r   groupbyr   columnsr   assert_index_equalr   test_in_numeric_groupby)r   rx   r9   dfr   msgr   r   s          r1   r&  z'TestBaseGroupby.test_in_numeric_groupbyE  sU   !'5!! 	?111*111  B xH)KEKKLLCy444 & &

3##%%%& & & & & & & & & & & & & & &ZZ__((d(;;CF!&(33333GG++,=>>>>>s   ;(B//B36B3)r   r   r   r&  r   r   s   @r1   r  r  D  s8        ? ? ? ? ? ? ? ? ?r3   r  c                  B     e Zd Z fdZ fdZd Z fdZ fdZ xZS )TestBaseDtypec                   |j         }t          j                            |          rA|j                            t          j                            t          d|                      t          j        
                    |          rQd}t          j        t          |          5  |                    |j                   d d d            n# 1 swxY w Y   d S t                                          |           d S )Nr   r&   z6string\[pyarrow\] should be constructed by StringDtyper   )r7   r,   rZ   r_   r.   r/   r)   r*   r+   rf   rd   r'   r   construct_from_stringr  r   #test_construct_from_string_own_name)r   r9   r0   ri   r(  r   s        r1   r-  z1TestBaseDtype.test_construct_from_string_own_name[  s)   &8x(( 	L##!!.L(LL "     8h'' 	KCy444 8 8++EJ7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 F33E:::::s   %CCCc                   |j         }t          j                            |          r+t	          |                              |j                  rJ d S t          j                            |          rA|j        	                    t          j                            t          d|                      t                                          |           d S )Nr   r&   )r7   r,   rZ   rd   rm   is_dtyper  r_   r.   r/   r)   r*   r+   rf   r   test_is_dtype_from_namer   r9   r0   ri   r   s       r1   r0  z%TestBaseDtype.test_is_dtype_from_nameo  s    &8h'' 	3E{{++EJ7777777x""8,, ''K%%2PhPP &     GG++E22222r3   c                    d}t          j        t          |          5  t          |                              d           d d d            d S # 1 swxY w Y   d S )Nz*'another_type' must end with '\[pyarrow\]'r   another_type)r)   r'   r   rm   r,  )r   r9   r(  s      r1   .test_construct_from_string_another_type_raisesz<TestBaseDtype.test_construct_from_string_another_type_raises~  s    ;]9C000 	> 	>KK--n===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   #AAAc                   |j         }t          j                            |          st          j                            |          sdt          j                            |          r|j        >t          j                            |          st          j                            |          r;|j	        
                    t          j                            | d                     t                                          |           d S )NzB does not have associated numpy dtype findable by find_common_typer   )r7   r,   rZ   r`   rc   ra   r   re   r_   r.   r/   r)   r*   r+   r   test_get_common_dtyper1  s       r1   r6  z#TestBaseDtype.test_get_common_dtype  s    &HX&&	x))	 %%h//	 5=K4Kx!!(++ 5Lx""8,, 5L L##!!# > > > "     	%%e,,,,,r3   c                    |j         }t          j                            |          rt	          |          sJ d S t                                          |           d S r   )r7   r,   rZ   rd   r   r   test_is_not_string_type)r   r9   ri   r   s      r1   r8  z%TestBaseDtype.test_is_not_string_type  s[    &8h'' 	3"5)))))))GG++E22222r3   )	r   r   r   r-  r0  r4  r6  r8  r   r   s   @r1   r*  r*  Z  s        ; ; ; ; ;(3 3 3 3 3> > >
- - - - -&3 3 3 3 3 3 3 3 3r3   r*  c                      e Zd ZdS )TestBaseIndexNr   r   r3   r1   r:  r:    r   r3   r:  c                  b     e Zd Zej                            dd           fd            Z xZS )TestBaseInterfacez6GH 45419: pyarrow.ChunkedArray does not support views.Fr(   runc                J    t                                          |           d S r   )r   	test_viewr   rj   r   s     r1   r@  zTestBaseInterface.test_view  s#     	$r3   )r   r   r   r)   r*   r+   r@  r   r   s   @r1   r<  r<    sa        [GU                    r3   r<  c                      e Zd Zd ZdS )TestBaseMissingc                   ||                                           }|d         }|                    |          }||usJ t          j        ||           |                    d          }||usJ t          j        ||           d S )Nr   backfill)method)isnafillnar   r   )r   rj   validr   s       r1   test_fillna_no_op_returns_copyz.TestBaseMissing.test_fillna_no_op_returns_copy  s    TYY[[L!QU##T!!!!
'555J//T!!!!
'55555r3   N)r   r   r   rJ  r   r3   r1   rC  rC    s#        
6 
6 
6 
6 
6r3   rC  c                      e Zd ZdS )TestBasePrintingNr   r   r3   r1   rL  rL    r   r3   rL  c                  b     e Zd Zej                            dd           fd            Z xZS )TestBaseReshaping5GH 45419: pyarrow.ChunkedArray does not support viewsFr=  c                J    t                                          |           d S r   )r   test_transposerA  s     r1   rQ  z TestBaseReshaping.test_transpose  s#     	t$$$$$r3   )r   r   r   r)   r*   r+   rQ  r   r   s   @r1   rN  rN    sa        [FE   % % % % % % % % %r3   rN  c                  b     e Zd Zej                            dd           fd            Z xZS )TestBaseSetitemrO  Fr=  c                J    t                                          |           d S r   )r   test_setitem_preserves_viewsrA  s     r1   rU  z,TestBaseSetitem.test_setitem_preserves_views  s#     	,,T22222r3   )r   r   r   r)   r*   r+   rU  r   r   s   @r1   rS  rS    sa        [FE   3 3 3 3 3 3 3 3 3r3   rS  c                      e Zd Zej                            ddeg          ej                            dddg          d                         ZdS )TestBaseParsingdtype_backendr!   enginers   pythonc           	        |j         j        }t          j                            |          rC|j                            t          j        	                    t          d| d                     nt          j                            |          rH|j        dv r?|j                            t          j        	                    t          d                     nWt          j                            |          r8|j                            t          j        	                    d                     t          j        dt          j        |t%          |j                   	          i          }|                    d
t(          j                  }t          j                            |          rt-          |          }nt/          |          }t          j        |dt%          |j                   i||          }|}	t3          j        ||	           d S )NzParameterized types z not supported.r&   )usnsz1https://github.com/pandas-dev/pandas/issues/49767z)CSV parsers don't correctly handle binaryr   
with_dtyperY   F)indexna_rep)r9   rY  rX  )r9   r7   r,   rZ   r_   r.   r/   r)   r*   r+   rf   ra   unit
ValueErrorre   rg   r  r   r   to_csvnpnanr	   r
   read_csvr   assert_frame_equal)
r   rY  rj   rX  r0   ri   r'  
csv_outputr   r   s
             r1   test_EA_typeszTestBaseParsing.test_EA_types  s    :+8x(( 	L##!!.K(KKK "      X""8,, 
	,1N1NL##!!%N "      X)) 	L##!!)T!UU   \<4s4:)O)O)OPQQYYU26Y::
8h'' 	. ,,JJ!*--JTZ1'	
 
 
 
fh/////r3   N)r   r   r   r)   r*   r   r   ri  r   r3   r1   rW  rW    sg        [_y*.EFF[XX77!0 !0 87 GF!0 !0 !0r3   rW  c                       e Zd Z fdZ xZS )TestBaseUnaryOpsc                j   |j         j        }t          j                            |          set          j                            |          sF|j                            t          j	        
                    t          j        d|                      t                                          |           d S )Nz$pyarrow.compute.invert does support r&   )r9   r7   r,   rZ   r[   r   r.   r/   r)   r*   r+   r   r   test_invertr   s       r1   rm  zTestBaseUnaryOps.test_invert  s    :+##H-- 	1D1DX1N1N 	L##!!6L(LL "     	D!!!!!r3   )r   r   r   rm  r   r   s   @r1   rk  rk    s8        	" 	" 	" 	" 	" 	" 	" 	" 	"r3   rk  c                       e Zd Zej                            dddg           fd            Zd Z fdZej                            ddd	d
ddde	j
        fdde	j
        fddg           fd            ZdZ xZS )TestBaseMethodsperiodsr@   rA   c           
     B   |j         j        }t          j                            |          rP|dk    rJ|j                            t          j        	                    t          j
        d| d| d                     t                                          ||           d S )Nr@   z
diff with z and periods=z will overflowr&   )r9   r7   r,   rZ   r^   r.   r/   r)   r*   r+   r-   r   	test_diff)r   rj   rp  r0   ri   r   s        r1   rr  zTestBaseMethods.test_diff  s    :+8''11 	gllL##!!?SXSSGSSS "     	$(((((r3   c                    |d d         }|                                 }|j        t          t                                                    k    sJ d S )NrL   )value_countsr9   r   r,   r  r   s      r1   'test_value_counts_returns_pyarrow_int64z7TestBaseMethods.test_value_counts_returns_pyarrow_int64  sI    CRCy""$$|z"((**55555555r3   c                >   |j         j        }t          j                            |          rMt
          rF|j                            t          j	        
                    d| t          j                             t                                          |||           d S NzNo pyarrow kernel for r   )r9   r7   r,   rZ   r_   r   r.   r/   r)   r*   r+   r   r   test_argmin_argmax)r   r|   r   r  r0   ri   r   s         r1   rx  z"TestBaseMethods.test_argmin_argmax  s     $)78x(( 	-@ 	L##!!>H>>6 "     	""#35MxXXXXXr3   zop_name, skipna, expected)idxmaxTr   )idxminTrD   )argmaxTr   )argminTrD   ry  Frz  )r{  FrB   )r|  FrB   c                D   |j         j        }t          j                            |          rOt
          rH|rF|j                            t          j	        
                    d| t          j                             t                                          ||||           d S rw  )r9   r7   r,   rZ   r_   r   r.   r/   r)   r*   r+   r   r   test_argreduce_series)r   r   r   r   r   r0   ri   r   s          r1   r~  z%TestBaseMethods.test_argreduce_series"  s      ,1?8x(( 	-@ 	V 	L##!!>H>>6 "     	%%$gvx	
 	
 	
 	
 	
r3   zbool[pyarrow])r   r   r   r)   r*   r   rr  ru  rx  rd  re  r~  _combine_le_expected_dtyper   r   s   @r1   ro  ro     s        [YB00) ) ) ) 10)6 6 6Y Y Y Y Y [#ubf%ubf%!!		
 
 
 
 
 
 "1r3   ro  c                  ^     e Zd ZeZd ZddZd ZddZd	 Z	 fd
Z
 fdZd Z fdZ xZS )TestBaseArithmeticOpsc                |    |                     d          }|dk    rd }|S |dk    rd S t          j        |          S )N_rtruedivc                ,    t          j        ||           S r   )rd  dividexys     r1   r  z8TestBaseArithmeticOps.get_op_from_name.<locals>.rtruedivI  s    yA&r3   	rfloordivc                ,    t          j        ||           S r   )rd  floor_divider  s     r1   <lambda>z8TestBaseArithmeticOps.get_op_from_name.<locals>.<lambda>N  s    1 5 5 r3   )stripr   get_op_from_name)r   r   short_opnamer  s       r1   r  z&TestBaseArithmeticOps.get_op_from_nameD  sY    }}S)):%%' ' ' O[((555"7+++r3   r   r   c                   |}d}t          |t          j                  r*d}|j        d d df         }|j        d d df         j        }n	|}|j        }|j        }	|st          |t          j                  rt          j        	                    |	          st          j        
                    |	          r|dvs~t          j                            |	          s_t          j                            |	          s@t          j                            |	          s!t          j                            |	          s|S n|dk    rt          j        
                    |	          s~t          j                            |	          s_t          j                            |	          s@t          j                            |	          s!t          j                            |	          s|S t                              |j                  }
t          j                            |
j                  rt          j                            |	          r%t          j                            |	          rd}n-d}n*|	j        }t#          |          t(          t*          fv r|dv rd	}|
                    d
| d          }
nmt          j                            |
j                  r3t          j                            |	          r t/          ||          |          }t1          j        |          }t          |t4                    sJ |dk    r<t          |t6                    r't5          t                                                    }nx|dk    rLt          |t          j                  r2|j        |k    r't5          t                                                    }n&t          j                            |j                  sJ |                    |          S |
                    |	          }
 t#          |j                  |
          }|r"t          j        ||j        |j                  }nt          j        |          }|S )NFTr   )__truediv____rtruediv____floordiv__mss)r  r  r\  z	duration[]__pow__)r_  r$  ) r   rg   r  ilocr9   r7   r   r,   rZ   r\   r   rb   ra   r`   r_   rh   _valuesrm   	is_date64ra  r   r   r   r   r   r   r   r   r  r   r_  r$  )r   r   r   otherpointwise_resultr   	was_frameexpected_dataoriginal_dtypeorig_pa_typepa_expectedra  alt	alt_dtypepd_expecteds                  r1   _cast_pointwise_resultz,TestBaseArithmeticOps._cast_pointwise_resultR  s    $	h-- 	'I$M!!!Q$/M Xaaad^1NN$M YN%3 	Zry99 	 $$\22  H''55   'FFF8''55 G 8((66 G 8##L11	 G
 8&&|44 G  &&28+>+>|+L+L&x##L11 'x$$\22 ' x-- ' x""<00	 ' Ohh}4558 011 +	9x--  8%%l33 DDDD
 $(;;8Y"777DK<O<O  D%**+>t+>+>+>??KKX  !122 	9rx7J7J8
 8
 	9
 ('#w''..CS))Ii44444)##
5'(B(B#&rzz||44		9$$ubi00 %K>11 'rzz||44		x**9+BCCCCC??9--- &**<88K1d=011+>> 	.|8>8;K  HH y--Hr3   c                    t            oQ|dv p|dv ot           rt          j                            |          p"|dv ot          j                            |          S )N__add____radd__r  r  r  __rfloordiv____sub____rsub__)r   r   r,   rZ   rb   r   )r   opnameri   s      r1   _is_temporal_supportedz,TestBaseArithmeticOps._is_temporal_supported  sy    && 
11 WX 100/ $$X..
/ 00 /$$X..	
r3   r   type[Exception] | Nonec                   |dv r| j         S t          j        |          }|j        }|                     ||          }|dv rt
          }n|rd }n|dv rAt          j                            |          st          j        	                    |          rd }nlt          j        
                    |          sKt          j                            |          s,t          j                            |          st          j        }nd }|S )N)
__divmod____rdivmod__>   __mod____rmod__r  )
divmod_excr   r   r7   r  rf   r,   rZ   rd   re   r\   r   r_   r   )r   r   r   r  r9   ri   arrow_temporal_supportedexcs           r1   _get_expected_exceptionz-TestBaseArithmeticOps._get_expected_exception  s    333?"S!! &#'#>#>w#Q#Q  
 
 
 &CC% 	CC///Hx(( 0,.H,>,>x,H,H 0 CCH  **
	x""8,,
	 x""8,,
	 -CCC
r3   c                   d }|                      ||          }|dk    rt          j                            |          s>t          j                            |          st          j                            |          r,t          s%t          j        	                    d|           }n|rpt          j        
                    |          s#|dv rMt          j                            |          r.t          j        	                    t          | d| d          }n&|dk    rqt          j                            |          st          j                            |          r3t          s,t          j        	                    t          j        d	          }n|d
k    rRt          j                            |          r3t          s,t          j        	                    t          j        d	          }nW|dk    rQt          j                            |          r2t          r+t          j        	                    t          j        d          }|S )N__rpow__z<GH#29997: 1**pandas.NA == 1 while 1**pyarrow.NA == NULL for r   r  z  not supported betweenpd.NA and z Python scalarr&   r  zdivide by 0r  r  z'Invalid decimal function: power_checked)r  r,   rZ   r\   r   r_   r   r)   r*   r+   rc   rb   r   r-   )r   r  ri   r*   r  s        r1   _get_arith_xfail_markerz-TestBaseArithmeticOps._get_arith_xfail_marker  s_   #'#>#>vx#P#P  j  $$X.. ! 8&&x00 ! 8&&x00	 ! ( ! ;$$&#& & %  DD & )	HX&&)	 ST TH((22T
 ;$$  : :!): : : %  DD o%%$$X.. &24(2E2Eh2O2O &' & ;$$$ %  DD
 n$$##H-- %' % ;$$$ %  DD
 i##H--  #   ;$$@ %  D
 r3   c                x   |j         j        }|dk    rRt          j                            |          st          j                            |          rt          j        d           |                     ||          }||j	        
                    |           t                                          ||           d S Nr  z%Skip testing Python string formatting)r9   r7   r,   rZ   rd   re   r)   r   r  r.   r/   r   test_arith_series_with_scalarr   rj   all_arithmetic_operatorsr0   ri   r*   r   s         r1   r  z3TestBaseArithmeticOps.test_arith_series_with_scalar)  s    :+#z11Hx(( 2,.H,>,>x,H,H 2 K?@@@++,DhOOL##D)))--d4LMMMMMr3   c                x   |j         j        }|dk    rRt          j                            |          st          j                            |          rt          j        d           |                     ||          }||j	        
                    |           t                                          ||           d S r  )r9   r7   r,   rZ   rd   re   r)   r   r  r.   r/   r   test_arith_frame_with_scalarr  s         r1   r  z2TestBaseArithmeticOps.test_arith_frame_with_scalar7  s    :+#z11Hx(( 2,.H,>,>x,H,H 2 K?@@@++,DhOOL##D))),,T3KLLLLLr3   c                N   |j         j        }|dv rlt          j                            |          rMt
          sF|j                            t          j	        
                    t          j        d|                      |                     ||          }||j                            |           |}t          j        |          }t          j        t          j        |j        d         gt#          |          z  |j                             }|                     |||           d S )Nr  zJImplemented pyarrow.compute.subtract_checked which raises on overflow for r&   r   rY   )r9   r7   r,   rZ   r^   r   r.   r/   r)   r*   r+   r-   r  rg   r   rh   r  lencheck_opname)	r   rj   r  r0   ri   r*   r   r   r  s	            r1   test_arith_series_with_arrayz2TestBaseArithmeticOps.test_arith_series_with_arrayE  s-   :+ % 
 ,,X66 ( L##!!?C8@C C "     ++,DhOOL##D)))*ioo 	"(CHQK=3s88#;4:NNNOO#w.....r3   c                   |j         j        }|                    d          rF|j                            t
          j                            t          j	        d|                      t                                          |           d S )Nint8zraises on overflow for r&   )r9   r7   r   r.   r/   r)   r*   r+   r,   r-   r   $test_add_series_with_extension_arrayr   s       r1   r  z:TestBaseArithmeticOps.test_add_series_with_extension_arrayg  s    :+??6"" 	L##!!??X?? "     	44T:::::r3   )r   r   )r   r   r   r  )r   r   r   rf   r  r  r  r  r  r  r  r  r  r  r   r   s   @r1   r  r  A  s        $J, , ,a a a aF
 
 
" " " "H? ? ?BN N N N NM M M M M /  /  /D
; 
; 
; 
; 
; 
; 
; 
; 
;r3   r  c                  p     e Zd Z fdZd Zej                            dg d          d             Z xZ	S )TestBaseComparisonOpsc                   t          j        |          }t          j        t          j        |j        d         gt	          |          z  |j                            }|j        dv r[ |||          }|d         |u sJ |d         |u sJ |                    ||          }||d<   ||d<   t          j	        ||           d S t                                          ||          S )Nr   rY   )eqne   a   )rg   r   rh   r  r  r9   r   combiner   r   r   test_compare_array)	r   rj   comparison_opr  r   r  r   r   r   s	           r1   r  z(TestBaseComparisonOps.test_compare_arrayu  s    ioo 	"(CHQK=3s88#;4:NNNOO!\11"]3..F !9((((":)))){{5-88H"HQK#HRL"6844444 77--dMBBBr3   c                    t          j        t          d          5   ||t                                 d d d            d S # 1 swxY w Y   d S )Nz'.* not implemented for <class 'object'>r   )r)   r'   rf   object)r   rj   r  s      r1   test_invalid_other_compz-TestBaseComparisonOps.test_invalid_other_comp  s    ]'P
 
 
 	* 	* M$)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   AA	Amasked_dtype)booleanInt64r   c                   g d}t          j        ||          }t          j        ||                                 d          } |||          }|t          j        t          j        t          j        fv rg d}ng d}t          j        |t          t          	                                                    }t          j        ||           d S )N)r@   r   NrY   r  )FFN)TTN)rg   r   loweroperatorltgtr  r   r,   bool_r   r   )	r   r  r  rj   
ser_maskedser_par   expr   s	            r1   test_comp_masked_numpyz,TestBaseComparisonOps.test_comp_masked_numpy  s     ||Yt<888
4,*<*<*>*>'I'I'IJJJvz22X[(+x{CCC&&&CC$$$C9S
288::(>(>???
vx00000r3   )
r   r   r   r  r  r)   r*   r   r  r   r   s   @r1   r  r  t  s        C C C C C(* * * [^-L-L-LMM1 1 NM1 1 1 1 1r3   r  c                     e Zd ZdZd Zej                            ddg dfej	        g dfdg df e
j        d          g dfdg d	f e
j        d          g d	fg          d
             Zd Zej                            ddg dfej	        g dfdg d	fdg df e
j        d          g d	f e
j        d          g dfg          d             Zd Zej                            ddg dfej	        g dfdg df e
j        d          g df e
j        d          g d	fg          d             Zej                            dddgddgddgg          d             ZdS )TestLogicalOpsz1Various Series and DataFrame logical ops methods.c                   t          j        dgdz  dgdz  z   d gdz  z   d          }t          j        g ddz  d          }||z  }t          j        g dd          }t          j        ||           ||z  }t          j        ||           t          j        |t          j        dgdz  dgdz  z   d gdz  z   d                     t          j        |t          j        g ddz  d                     d S )NTr  Fboolean[pyarrow]rY   TFN)	TTTTFNTNNrg   r   r   r   r   rN   rO   r   r   s        r1   test_kleene_orzTestLogicalOps.test_kleene_or  s;   ItfqjE7Q;.$!;CUVVVI)))A-5GHHHQ9CCC$
 
 
 	vx000Q
vx000 	ItfqjE7Q;.$!;CUVVV	
 	
 	
 	ry,,,q08JKKK	
 	
 	
 	
 	
r3   zother, expectedN)TNNT)TTTFr  c                    t          j        g dd          }||z  }t          j        |d          }t          j        ||           ||z  }t          j        ||           t          j        |t          j        g dd                     d S Nr  r  rY   r  r   r  r   rN   r   s        r1   test_kleene_or_scalarz$TestLogicalOps.test_kleene_or_scalar       I)))1CDDDU9X-?@@@
vx000
vx000 	ry,,,4FGGG	
 	
 	
 	
 	
r3   c                   t          j        dgdz  dgdz  z   d gdz  z   d          }t          j        g ddz  d          }||z  }t          j        g dd          }t          j        ||           ||z  }t          j        ||           t          j        |t          j        dgdz  dgdz  z   d gdz  z   d                     t          j        |t          j        g ddz  d                     d S )NTr  Fr  rY   r  )	TFNFFFNFNr  r  s        r1   test_kleene_andzTestLogicalOps.test_kleene_and  s;   ItfqjE7Q;.$!;CUVVVI)))A-5GHHHQ9GGG$
 
 
 	vx000Q
vx000 	ItfqjE7Q;.$!;CUVVV	
 	
 	
 	ry,,,q08JKKK	
 	
 	
 	
 	
r3   )NFNFFFc                    t          j        g dd          }||z  }t          j        |d          }t          j        ||           ||z  }t          j        ||           t          j        |t          j        g dd                     d S r  r  r  s        r1   test_kleene_and_scalarz%TestLogicalOps.test_kleene_and_scalar  r  r3   c                   t          j        dgdz  dgdz  z   d gdz  z   d          }t          j        g ddz  d          }||z  }t          j        g dd          }t          j        ||           ||z  }t          j        ||           t          j        |t          j        dgdz  dgdz  z   d gdz  z   d                     t          j        |t          j        g ddz  d                     d S )NTr  Fr  rY   r  )	FTNTFNNNNr  r  s        r1   test_kleene_xorzTestLogicalOps.test_kleene_xor   s;   ItfqjE7Q;.$!;CUVVVI)))A-5GHHHQ9DDD$
 
 
 	vx000Q
vx000 	ItfqjE7Q;.$!;CUVVV	
 	
 	
 	ry,,,q08JKKK	
 	
 	
 	
 	
r3   NNN)FTNc                    t          j        g dd          }||z  }t          j        |d          }t          j        ||           ||z  }t          j        ||           t          j        |t          j        g dd                     d S r  r  r  s        r1   test_kleene_xor_scalarz%TestLogicalOps.test_kleene_xor_scalar  s     I)))1CDDDU9X-?@@@
vx000
vx000 	ry,,,4FGGG	
 	
 	
 	
 	
r3   zop, exp__and____or____xor__c                <   g d}t          j        |d          }t          j        |d          } t          ||          |          }t          j        |dd gt          t                                                              }t          j        ||           d S )Nr  r  rY   r  F)rg   r   r   r   r,   r  r   r   )r   opr  rj   r  r  r   r   s           r1   test_logical_masked_numpyz(TestLogicalOps.test_logical_masked_numpy.  s     #""Yt9555
4'9:::$$$Z009c5$/z"((**7M7MNNN
vx00000r3   )r   r   r   __doc__r  r)   r*   r   rg   NArd  r  r  r  r  r  r  r  r   r3   r1   r  r    s       ;;
 
 
, [%%%&U&&&'%%%&RXd^^///0'''(RXe__1112	

 

 

 


 
 
, [&&&'U'''(&&&')))*RXd^^0001RXe__3334	

 

 

 


 
 
, [%%%&U&&&'&&&'RXd^^0001RXe__1112	
	 	
 
	 	
 [t	
 1 1 1 1 1r3   r  r   c                   t          |           }t          j        g d|          }t          j        g d|          }||z  }t          j        g d|          }t          j        ||           ||z  }t          j        g d|          }t          j        ||           ||z  }t          j        g d|          }t          j        ||           | }|                    d                                           }t          j        ||                              |                                          }t          j        ||           d S )N)r@   Nr  r;   rY   )Nr  rM   r;   )NNrz   r;   )NNr@   r;   )NN   r   r   )	r   rg   r   r   r   rH  to_numpymaskisnull)r   r9   leftrightr   r   s         r1   test_bitwiser  @  sN    wE9___E222DIoooU333EE\Fy3335AAAH68,,,E\Fy3335AAAH68,,,E\Fy3335AAAH68,,,UFQ((**+Hy///44T[[]]CCH68,,,,,r3   c                 $   t          j        t          d          5  t          j        d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        d           d d d            d S # 1 swxY w Y   d S )NzPassing pyarrow typer   z#not_a_real_dype[s, tz=UTC][pyarrow]zdecimal(7, 2)[pyarrow])r)   r'   rf   r   r,  r   r3   r1   Ftest_arrowdtype_construct_from_string_type_with_unsupported_parametersr  Y  s4   	*2H	I	I	I P P()NOOOP P P P P P P P P P P P P P P 
*2H	I	I	I C C()ABBBC C C C C C C C C C C C C C C C C Cs!   =AA#BB	B	c                     t          j        d          } t          t                              dd                    }| |k    sJ d S )Nztimestamp[s, tz=UTC][pyarrow]r  UTC)r   r,  r,   	timestamp)r9   r   s     r1   5test_arrowdtype_construct_from_string_supports_dt64tzr  a  sE    ,-LMME",,sE2233HHr3   c                     d} d}t          j        t          |          5  t          j        t          d          |            d d d            d S # 1 swxY w Y   d S )Nzint64[pyarrow]foobar[pyarrow]zYPassing pyarrow type specific parameters \(\[pyarrow\]\) in the string is not supported\.r   r  rY   )r)   r'   rf   rg   r   range)invalidr(  s     r1   ;test_arrowdtype_construct_from_string_type_only_one_pyarrowr  h  s    -G	%  
*#	6	6	6 + +
	%(('****+ + + + + + + + + + + + + + + + + +s   $AAAinterpolation)linearr  highernearestmidpointquantiler?   c                   | j         j        }|                     g d          } t          j        |           }t
          j                            |          s>t
          j                            |          st
          j        	                    |          r]t          rd}nd}t          j        t
          j        |          5  |                    ||           d d d            n# 1 swxY w Y   d S t
          j                            |          sEt
          j                            |          s&t
          j                            |          rt          snpt
          j                            | j        j                  rnF|j                            t          j                            t
          j        d|                      |                     g d          } t          j        |           }|                    ||          }t
          j                            |          r|dvr|j        rd	|j         d
|j         d}nd	|j         d}|                    |          }	|	                    ||          }
|dk    r*|j        dk    r|
                    d          }
||
k    sJ nR|j        dk    r|
j                            d          }
tA          j!        ||
                    | j                              d S |dk    r|| d         k    sJ d S t          j        |                     ddg          ddg          }
t
          j                            |          s>t
          j                            |          st
          j                            |          r*|
                    d          }
|                    d          }tA          j!        ||
           d S )Nr   r   r   z;Function quantile has no kernel matching input types \(.*\)z=Function 'quantile' has no kernel matching input types \(.*\)r   )qr  z&quantile not supported by pyarrow for r&   )r  r  zM8[z, r  r?   r\  F)warnr   r_  r  )"r9   r7   takerg   r   r,   rZ   rd   re   r[   r   r)   r'   r   r  r   r\   r_   r   r   rm   r.   r/   r*   r+   ra   r   ra  r   to_pydatetimedtfloorr   r   )rj   r  r  r0   ri   r   r(  r   pd_dtypeser_npr   s              r1   test_quantiler)  s  s
   
 z'H99YYYD
)D//C 	8$$8h'' 8x((  	SPCCRC]26cBBB 	B 	BLL8=LAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	H%%
8))
 H))
 3F

 				dn1	2	2 
K2JJJ   	
 	
 	
 99YYYD
)D//C\\HM\BBF	xX&& =@S+S+S ; 	.<X]<<hk<<<HH-X]---HH%%??X]?KKs??}$$#11u1==X%%%%%}$$#;,,T22"68??4:+F+FGGG3a       9TYY1v..sCjAAAH))	7x##H--	7 x""8,,	7
  '9::H]]#566F
vx00000s   C%%C),C)ztake_idx, exp_idx)r   r   rD   rD   r;   r;   r;   )r   r   r   rD   r;   r;   
multi_modesingle_mode)r5   c                    |                      |          }t          j        |          }|                    d          }t          j        |                      |                    }t	          j        ||           d S )NTdropna)r#  rg   r   moder   r   )rx   take_idxexp_idxrj   r   r   r   s          r1   test_mode_dropna_truer2    sn     !!(++D
)D//CXXTX""Fy*//8899H68,,,,,r3   c                x   t          j        d d | d         g| j                  }|                    d          }t          j        d g| j                  }t	          j        ||           t          j        | d         d g| j                  }|                    d          }t	          j        ||           d S )Nr   rY   Fr-  )rg   r   r9   r/  r   r   )rj   	more_nansr   r   s       r1   test_mode_dropna_false_mode_nar5    s    	4tAw/tzBBBI^^5^))Fy$tz222H68,,,y$q'4
;;;H]]%]((F68,,,,,r3   zarrow_dtype, expected_type   f1f2c                :    t          |           j        |k    sJ d S r   )r   rm   )arrow_dtypeexpected_types     r1   test_arrow_dtype_typer<    s&    " k""'=888888r3   c                    t          t                              g d                    } t          |           sJ t          j        j                            |           sJ t	          j        t          t          |                               }||          }|t          j        |                    }t          j        ||           d S )NTFT)r#   r,   rh   r   rg   corecommonis_bool_indexerr   r  r  rd  asarrayr   r   )rj   r  r   r   s       r1   test_is_bool_dtyperC    s    rxx(;(;(;<<==D7>))$/////
	%D		""##AtWFD!!"H68,,,,,r3   c                    | j         j        }t          j                            |          s>t          j                            |          st          j                            |          rt          |           sJ d S t          |           rJ d S r   )r9   r7   r,   rZ   r\   r   r_   r   rj   r   s     r1   test_is_numeric_dtyperF    s    j&G
W%%*8w''* 8w''*
  %%%%%%%#D)))))))r3   c                    | j         j        }t          j                            |          rt          |           sJ d S t          |           rJ d S r   )r9   r7   r,   rZ   r   r   rE  s     r1   test_is_integer_dtyperH    sX    j&G	x7## *%%%%%%%#D)))))))r3   c                    | j         j        }t          j                            |          rt          |           sJ d S t          |           rJ d S r   )r9   r7   r,   rZ   r]   r   rE  s     r1   test_is_signed_integer_dtyperJ    sX    j&G	x!!'** 1&t,,,,,,,*40000000r3   c                    | j         j        }t          j                            |          rt          |           sJ d S t          |           rJ d S r   )r9   r7   r,   rZ   r^   r   rE  s     r1   test_is_unsigned_integer_dtyperL    sX    j&G	x##G,, 3(.......,T2222222r3   c                    | j         j        }t          j                            |          rt          |           sJ d S t          |           rJ d S r   )r9   r7   r,   rZ   r\   r   rE  s     r1   test_is_float_dtyperN  !  sX    j&G	xG$$ (d#######!$'''''''r3   c                   t          j        |           }|                    d          }t          j        |          }t          j        |          }t          |          t          |          k    sJ t          j        |          }t          j        ||           t          j        |          }t          j        ||           d S )NrD   )	rg   r   headpickledumpsr  loadsr   r   )rj   r   expected_slicedfull_pickledsliced_pickledr   result_sliceds          r1   test_pickle_roundtriprX  )  s    yHmmA&&O<))L\/22N|s>222222\,''F68,,,L00M=/:::::r3   c                   | j                                         j        }|                    | j                  }t          |j        t                    rJ t          |j        t                    sJ t          j        ||            d S r   )	r   	to_pandasrh   r   r9   r   r   r   r   )rj   pd_arrayr   s      r1   test_astype_from_non_pyarrowr\  9  st    ~''))/H__TZ((F(.*55555flJ/////#FD11111r3   c                     t          j        dg          } |                     d          }t          j        dgd          }t          j        ||           d S )N1.0r  r=   rY   )rg   r   r   r   r   r   r   r   s      r1   &test_astype_float_from_non_pyarrow_strr`  B  sU    
)UG

CZZ*++Fy#&8999H68,,,,,r3   c                $   |                                  }| j        j        }t          j                            |          s>t          j                            |          st          j                            |          r"t          j	        t          |                     }nt          j	        | j                  }| j        r;|                    t                    }t          j        |t          j        |           <   t#          j        ||           d S r   )r  r   rm   r,   rZ   rb   ra   r`   rd  rh   list_hasnar   r  rg   r  rG  r   assert_numpy_array_equal)rj   r   r   r   s       r1   test_to_numpy_with_defaultsre  J  s    ]]__Fn!G
W%%,8  )), 8G$$,
 8DJJ''8DN++{ (??6**"$%11111r3   c                    dd g} t          j        | d          }|                                }t          j        dt           j        gt
                    }t          |d         t                    sJ t          j	        ||           d S )Nr@   r   rY   r   )
rg   rh   r  rd  r  r  r   intr   rd  )rj   r  r   r   s       r1   test_to_numpy_int_with_narh  _  sz    t9D
(4/
0
0
0C\\^^FxBE
&111HfQi%%%%%11111r3   zna_val, exp)r@   r@   c                    t          j        t           j        t           j        gd          }|                    d|           }t	          j        |gdz  d          }t          j        ||           d S )Nnull[pyarrow]rY   r  )r9   r  rD   rg   rh   r  r  rd  r   rd  )na_valr  r  r   r   s        r1   test_to_numpy_null_arrayrm  i  sh     (BE25>
9
9
9C\\	F\;;Fx	333H11111r3   c                     t          j        t           j        t           j        gd          } |                     d           }t	          j        t           j        gdz  d          }t          j        ||           d S )Nrj  rY   rD   r  rk  )r  r   r   s      r1   !test_to_numpy_null_array_no_dtypero  r  sf    
(BE25>
9
9
9C\\\%%Fx!8444H11111r3   c                   |                                  }|                                 }| d         |d d <   t          j        | d         gt          |           z  | j        j                  }t          j        ||           |                                 }| d d d         |d d <   | d d d         }t          j        ||           |                                 }|                                 |d d <   | }t          j        ||           d S )Nr   rY   rB   )	copyr#   rn   r  r   rm   r   r   tolist)rj   origr   r   s       r1   test_setitem_null_slicert  z  s    99;;DYY[[FQF111I"1	a	CIIn!  H #FH555YY[[FTTrT
F111IDDbDzH#FH555YY[[FF111IH#FH55555r3   c                   | j         j        }t          j                            |          st          j                            |          rd}t          }d}nyt          j                            |          s>t          j                            |          st          j        	                    |          rd}t          j
        }d}nd}t          }d}t          j        ||          5  || d d <   d d d            d S # 1 swxY w Y   d S )N{   zInvalid value '123' for dtypefoozCould not convertzInvalid value 'foo' for dtyper   )r   rm   r,   rZ   rd   re   r   r   r\   r[   r-   r)   r'   )rj   r   
fill_valueerrr(  s        r1   test_setitem_invalid_dtyperz    s@   n!G	x'"" .bh&8&8&A&A .
-
G$$.8((. 8w''.
 
o!
-	s#	&	&	&  QQQ                 s   &C;;C?C?zreturns object with 7.0r   c                 R   t                               t          j        d          t          j        d          gt                                                     } |                     t                                           t          t                                                     ij                  }t          j	        t          j        d          t          j        d          gt          t                                                               }t          j        ||           d S )Nz
2019-12-31rm   types_mapperrY   )r,   rh   rg   	Timestampdate32rZ  r   date64getr   r   r   )
date_arrayr   r   s      r1   &test_from_arrow_respecting_given_dtyper    s    	l	#	#R\,%?%?@ryy{{   J !!iikk:biikk#:#:;? "  F y	l	#	#R\,%?%?@%%  H 68,,,,,r3   zdoesn't raise with 7c                    t                               ddgt                                                     } t          j        t           j        d          5  |                     t                                           t          t                                                     ij	                   d d d            d S # 1 swxY w Y   d S )Nr        @r|  zFloat value 1.5 was truncatedr   r}  )
r,   rh   r  r)   r'   r-   rZ  r   r  r  )rh   s    r1   -test_from_arrow_respecting_given_dtype_unsafer    s    HHc3ZbjjllH33E	r.M	N	N	N Q QbjjllJrxxzz4J4J%K%OPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs   AB<<C C c                    d} t          j        dddt           j        g|           }|                    d          }t          j        dddt           j        g|           }t	          j        ||           t          j        d	t           j        d
g|           }|                    d          }t          j        dt           j        dg|           }t	          j        ||           d S )Nr  r>   gGz?g{Gz@rY   r@   g333333?g@g^@gp=
cL@rB   g      ^@g      N@)rg   r   r  roundr   r   )r9   r   r   r   s       r1   
test_roundr    s    E
)S$be,E
:
:
:CYYq\\Fy#sC/u===H68,,,
)UBE5)
7
7
7CYYr]]Fy%-U;;;H68,,,,,r3   c                    | \  }}}|                      g d          }t          j        |d<   |rt          j        |          }d}t	          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )N)rD   r   r@   rB   zOsearchsorted requires array to be sorted, which is impossible with NAs present.r   )r#  rg   r  r   r)   r'   rb  searchsorted)r|   	as_seriesrO   rs   rN   r  r(  s          r1    test_searchsorted_with_na_raisesr    s    GAq!


			
*
*CeCG inn	0  
z	-	-	-                   s    BB
Bc                    t          j        t          j        ddgt          t                              t                                          t                                                                        ddgd          } |                                 }| 	                    ddg	          }t          j        ||           d S )
Nr  r  rY   r@   rD   rN   rO   rN   rO   )by)rg   r  r   r   r,   
dictionaryint32r   rq  sort_valuesr   rg  )r'  r   r   s      r1   test_sort_values_dictionaryr    s    	c
*R]]288::ryy{{-S-S"T"T   Q		
 	

 
B wwyyH^^Sz^**F&(+++++r3   patabcz	a[a-z]{2}c                T   t          j        dd gt          t                                                              }|j                            |           }t          j        dd gt          t                                                              }t          j	        ||           d S )Nr  rY   r@   )
rg   r   r   r,   r   r   r   r  r   r   )r  r   r   r   s       r1   test_str_countr    s~    
)UDMBIIKK)@)@
A
A
ACW]]3Fy!T*RXXZZ*@*@AAAH68,,,,,r3   c                    t          j        dd gt          t                                                              } t          j        t          d          5  | j        	                    dd           d d d            d S # 1 swxY w Y   d S )Nr  rY   z	count notr   r@   flags)
rg   r   r   r,   r   r)   r'   rf   r   r   r   s    r1    test_str_count_flags_unsupportedr    s    
)UDMBIIKK)@)@
A
A
AC	*+	>	>	> & &e1%%%& & & & & & & & & & & & & & & & & &   BB	Bzside, str_funcr  rjustr  ljustbothcenterc                   t          j        dd gt          t                                                              }|j                            d| d          }t          j         t          d|          dd          d gt          t                                                              }t          j	        ||           d S )NrN   rY   r  r  )widthsidefillchar)
rg   r   r   r,   r   r   padr   r   r   )r  str_funcr   r   r   s        r1   test_str_padr    s     )S$Kz"))++'>'>
?
?
?CW[[qtc[::Fy	h		3	'	'.j6M6M  H 68,,,,,r3   c                    t          j        dd gt          t                                                              } t          j        t          d          5  | j        	                    ddd           d d d            d S # 1 swxY w Y   d S )NrN   rY   zInvalid side: foor   r  rw  r  )
rg   r   r   r,   r   r)   r'   rb  r   r  r  s    r1   test_str_pad_invalid_sider    s    
)S$Kz"))++'>'>
?
?
?C	z)<	=	=	= # #Auc"""# # # # # # # # # # # # # # # # # #r  zpat, case, na, regex, expabFTAbz	a[a-z]{1}z	A[a-z]{1}c                X   t          j        dd gt          t                                                              }|j                            | |||          }t          j        |t          t                                                              }t          j	        ||           d S )Nr  rY   )casenaregex)
rg   r   r   r,   r   r   containsr  r   r   )r  r  r  r  r  r   r   r   s           r1   test_str_containsr    s     )UDMBIIKK)@)@
A
A
ACWc5AAFyJrxxzz$:$:;;;H68,,,,,r3   c                    t          j        dd gt          t                                                              } t          j        t          d          5  | j        	                    dd           d d d            d S # 1 swxY w Y   d S )Nr  rY   zcontains notr   rN   r@   r  )
rg   r   r   r,   r   r)   r'   rf   r   r  r  s    r1   #test_str_contains_flags_unsupportedr    s    
)UDMBIIKK)@)@
A
A
AC	*.	A	A	A ' 'A&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 'r  zside, pat, na, exp
startswithrO   endswithbcc                \   t          j        dd gt          t                                                              } t          |j        |           ||          }t          j        |t          t                                                              }t          j	        ||           d S )Nr  rY   )r  
rg   r   r   r,   r   r   r   r  r   r   )r  r  r  r  r   r   r   s          r1   test_str_start_ends_withr  "  s     )UDMBIIKK)@)@
A
A
AC#WSWd##CB///FyJrxxzz$:$:;;;H68,,,,,r3   zarg_name, argreplr  r  r@   c                    t          j        dd gt          t                                                              }dddd}||| <   t          j        t          d          5   |j        j	        d	i | d d d            d S # 1 swxY w Y   d S )
Nr  rY   rO   r  T)r  r  r  zreplace is not supportedr   r   )
rg   r   r   r,   r   r)   r'   rf   r   replace)arg_nameargr   kwargss       r1   test_str_replace_unsupportedr  2  s    
 )UDMBIIKK)@)@
A
A
AC#55FF8	*2L	M	M	M " "!!&!!!" " " " " " " " " " " " " " " " " "s   #BB
Bzpat, repl, n, regex, exprN   r  rB   xbxcxbacz[a-b]xxxcc                X   t          j        dd gt          t                                                              }|j                            | |||          }t          j        |t          t                                                              }t          j        ||           d S )NabacrY   )nr  )	rg   r   r   r,   r   r   r  r   r   )r  r  r  r  r  r   r   r   s           r1   test_str_replacer  >  s     )VTN*RYY[[*A*A
B
B
BCW__S$!5_99FyJryy{{$;$;<<<H68,,,,,r3   c                    t          j        dd gt          t                                                              } t          j        t          d          5  | j        	                    ddg           d d d            d S # 1 swxY w Y   d S )Nr  rY   zrepeat is notr   r@   rD   )
rg   r   r   r,   r   r)   r'   rf   r   repeatr  s    r1   test_str_repeat_unsupportedr  M  s    
)UDMBIIKK)@)@
A
A
AC	*/	B	B	B  1v                 r  zUnsupported for pyarrow < 7r   c                 T   t          j        dd gt          t                                                              } | j                            d          }t          j        dd gt          t                                                              }t          j        ||           d S )Nr  rY   rD   abcabc)	rg   r   r   r,   r   r   r  r   r   r_  s      r1   test_str_repeatr  S  s     )UDMBIIKK)@)@
A
A
ACW^^AFy(D)BIIKK1H1HIIIH68,,,,,r3   zpat, case, na, expc                V   t          j        dd gt          t                                                              }|j                            | ||          }t          j        |t          t                                                              }t          j	        ||           d S Nr  rY   )r  r  
rg   r   r   r,   r   r   r   r  r   r   r  r  r  r  r   r   r   s          r1   test_str_matchr  _       )UDMBIIKK)@)@
A
A
ACW]]3Tb]11FyJrxxzz$:$:;;;H68,,,,,r3   Abcc                V   t          j        dd gt          t                                                              }|j                            | ||          }t          j        |t          t                                                              }t          j	        ||           d S r  r  r  s          r1   test_str_fullmatchr  q  r  r3   zsub, start, end, exp, exp_typr  rD   c                (   t          j        dd gt          t                                                              }|j                            | ||          }t          j        |t          |                    }t          j        ||           d S )Nr  rY   )startend)	rg   r   r   r,   r   r   findr   r   )subr  r  r  exp_typr   r   r   s           r1   test_str_findr    sz    
 )UDMBIIKK)@)@
A
A
ACW\\#U\44FyJw$7$7888H68,,,,,r3   c                    t          j        dd gt          t                                                              } t          j        t          d          5  | j        	                    dd           d d d            d S # 1 swxY w Y   d S )Nr  rY   zfind not implementedr   r  r@   )r  )
rg   r   r   r,   r   r)   r'   rf   r   r  r  s    r1   test_str_find_notimplementedr    s    
)UDMBIIKK)@)@
A
A
AC	*2H	I	I	I $ $T###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $r  zi, exp)rO   eN)rs   r  N)rs   NN)rN   NNr  c                P   t          j        g dt          t                                                              }|j                            |           }t          j        |t          t                                                              }t          j        ||           d S )N)r  deNrY   )	rg   r   r   r,   r   r   r  r   r   )r  r  r   r   r   s        r1   test_str_getr    s}     )'''z"))++/F/F
G
G
GCW[[^^FyJryy{{$;$;<<<H68,,,,,r3   z=TODO: StringMethods._validate should support Arrow list typesc            
        t          j        t          t                              t          d          t          d          d g                              } | j                            d          }t          j        g dt          t          	                                                    }t          j        ||           d S )Nr  123=za=b=cz1=2=3NrY   )rg   r   r#   r,   rh   rb  r   joinr   r   r   r   r_  s      r1   test_str_joinr    s    
 )'$u++tE{{D1Q(R(RSS
T
TCW\\#Fy111BIIKK9P9PQQQH68,,,,,r3   c                 R   t          j        t          t                              g d                              } | j                            d          }t          j        g dt          t                                                              }t          j
        ||           d S )N)r  r  Nr  r  rY   )rg   r   r#   r,   rh   r   r  r   r   r   r   r_  s      r1   test_str_join_string_typer    s    
)'1E1E1E(F(FGG
H
HCW\\#Fy111BIIKK9P9PQQQH68,,,,,r3   zstart, stop, step, expc                T   t          j        dd gt          t                                                              }|j                            | ||          }t          j        |t          t                                                              }t          j        ||           d S NabcdrY   )	rg   r   r   r,   r   r   slicer   r   )r  stopstepr  r   r   r   s          r1   test_str_slicer    s     )VTN*RYY[[*A*A
B
B
BCW]]5$--FyJryy{{$;$;<<<H68,,,,,r3   zstart, stop, repl, expaxcdxcdcdc                T   t          j        dd gt          t                                                              }|j                            | ||          }t          j        |t          t                                                              }t          j        ||           d S r  )	rg   r   r   r,   r   r   slice_replacer   r   )r  r  r  r  r   r   r   s          r1   test_str_slice_replacer    s     )VTN*RYY[[*A*A
B
B
BCW""5$55FyJryy{{$;$;<<<H68,,,,,r3   zvalue, method, exp)a1cisalnumT)z!|,r  F)aaaisalphaT)z!!!r   F)u   ٠	isdecimalT)z~!r  F)rP   isdigitT)~r  F)r  islowerT)aaAr  F)r  	isnumericT)11Ir  F) isspaceT) r	  F)zThe ThatistitleT)zthe Thatr  F)AAAisupperT)AAcr  Fc                Z   t          j        | d gt          t                                                              } t          |j        |                      }t          j        |d gt          t                                                              }t          j	        ||           d S NrY   r  )valuerF  r  r   r   r   s         r1   test_str_is_functionsr    s    0 )UDMBIIKK)@)@
A
A
AC%WSWf%%''Fy#tJrxxzz,B,BCCCH68,,,,,r3   zmethod, exp
capitalizezAbc deftitlezAbc DefswapcasezAbC Defr  zabc defupperzABC DEFcasefoldc                Z   t          j        dd gt          t                                                              } t          |j        |                       }t          j        |d gt          t                                                              }t          j        ||           d S )NzaBc dEFrY   	rg   r   r   r,   r   r   r   r   r   )rF  r  r   r   r   s        r1   test_str_transform_functionsr    s     )Y%Z		-D-D
E
E
EC%WSWf%%''Fy#tJryy{{,C,CDDDH68,,,,,r3   c                 R   t          j        dd gt          t                                                              } | j                                        }t          j        dd gt          t                                                              }t          j	        ||           d S )Nr  rY   r;   )
rg   r   r   r,   r   r   r  r  r   r   r_  s      r1   test_str_lenr    sz    
)VTN*RYY[[*A*A
B
B
BCW[[]]Fy!T*RXXZZ*@*@AAAH68,,,,,r3   zmethod, to_strip, val)r  Nz abc )r  r  xabcx)lstripNz abc)r  r  xabc)rstripNzabc )r   r  abcxc                ^   t          j        |d gt          t                                                              } t          |j        |           |          }t          j        dd gt          t                                                              }t          j        ||           d S )NrY   )to_stripr  r  )rF  r#  valr   r   r   s         r1   test_str_stripr%    s     )S$Kz"))++'>'>
?
?
?C%WSWf%%x888Fy%j.E.EFFFH68,,,,,r3   r$  abc123c                T   t          j        | d gt          t                                                              }|j                            d          }t          j        dd gt          t                                                              }t          j        ||           d S NrY   r  r  )	rg   r   r   r,   r   r   removesuffixr   r   r$  r   r   r   s       r1   test_str_removesuffixr+        
)S$Kz"))++'>'>
?
?
?CW!!%((Fy%j.E.EFFFH68,,,,,r3   123abcc                T   t          j        | d gt          t                                                              }|j                            d          }t          j        dd gt          t                                                              }t          j        ||           d S r(  )	rg   r   r   r,   r   r   removeprefixr   r   r*  s       r1   test_str_removeprefixr0  &  r,  r3   errorsignorestrictzencoding, exputf8s   abcutf32s     a   b   c   c                V   t          j        dd gt          t                                                              }|j                            ||           }t          j        |d gt          t                                                              }t          j	        ||           d S Nr  rY   )
rg   r   r   r,   r   r   encodebinaryr   r   )r1  encodingr  r   r   r   s         r1   test_str_encoder;  .  s     )UDMBIIKK)@)@
A
A
ACW^^Hf--Fy#tJryy{{,C,CDDDH68,,,,,r3   c           	        t          j        g dt          t                                                              }|j                            d|           }t          j        dgg d gt          t                              t                                                                        }t          j	        ||           d S )N)r  efgNrY   rO   r  )
rg   r   r   r,   r   r   findalllist_r   r   )r  r   r   r   s       r1   test_str_findallr@  =  s    
)(((
299;;0G0G
H
H
HCW__S_..Fy3%T**RXXbiikk=R=R2S2STTTH68,,,,,r3   rF  r_  rindexz
start, endc                   t          j        dd gt          t                                                              } t          |j        |           d||          }t          j        dd gt          t                                                              }t          j	        ||           t          j        t          d          5   t          |j        |           d||           d d d            d S # 1 swxY w Y   d S )NabcbarY   rs   rD   zsubstring not foundr   rw  )rg   r   r   r,   r   r   r   r  r   r   r)   r'   rb  )rF  r  r  r   r   r   s         r1   test_str_r_indexrD  E  s     )WdO:biikk+B+B
C
C
CC%WSWf%%c5#66Fy!T*RXXZZ*@*@AAAH68,,,	z)>	?	?	? 4 4   s3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   	!C77C;>C;formNFCNFKCc                   t          j        dd gt          t                                                              }|j                            |           }|                                }t          j	        ||           d S r7  )
rg   r   r   r,   r   r   	normalizerq  r   r   )rE  r   r   r   s       r1   test_str_normalizerJ  W  se    
)UDMBIIKK)@)@
A
A
ACWt$$FxxzzH68,,,,,r3   c                X   t          j        g dt          t                                                              }|j                            d| |          }t          j        g dt          t                                                              }t          j	        ||           d S )N)rC  rw  NrY   rs   )rD   rB   N)
rg   r   r   r,   r   r   rfindr  r   r   )r  r  r   r   r   s        r1   test_str_rfindrM  _  s     )****RYY[[2I2I
J
J
JCW]]3s++Fyj.D.DEEEH68,,,,,r3   c                 X   t          j        dd gt          t                                                              } | j                            ddi          }t          j        dd gt          t                                                              }t          j        ||           d S )NrC  rY   r  rO   bbcbb)	rg   r   r   r,   r   r   	translater   r   r_  s      r1   test_str_translaterQ  m  s    
)WdO:biikk+B+B
C
C
CCWCy))Fy'4
299;;0G0GHHHH68,,,,,r3   c                 T   t          j        dd gt          t                                                              } | j                            d          }t          j        dd gt          t                                                              }t          j        ||           d S )NrC  rY   r  zabc
ba)	rg   r   r   r,   r   r   wrapr   r   r_  s      r1   test_str_wraprT  t  s}    
)WdO:biikk+B+B
C
C
CCW\\!__Fy)T**RYY[[2I2IJJJH68,,,,,r3   c                 f   t          j        g dt          t                                                              } | j                                        }t          j        g dg dg dgt          t                                                    g d          }t          j
        ||           d S )N)za|bNza|crY   )TTFr  r>  )rN   rO   rs   )r9   r$  )rg   r   r   r,   r   r   get_dummiesr  r  r   rg  r_  s      r1   test_get_dummiesrW  {  s    
)(((
299;;0G0G
H
H
HCW  ""F|			3335H5H5HI$$  H
 &(+++++r3   c                    t          j        dd gt          t                                                              } | j                            d          }t          j        g dg dgt          t                                                              }t          j	        ||           | j                            dd          }t          j        t          t                              g dd g                              }t          j        ||           | j                            d          }t          j        g dg dgt          t                                                              }t          j	        ||           | j                            dd          }t          j        t          t                              g dd g                              }t          j        ||           d S )	NrC  rY   rO   )rN   rO   cbar  Fexpand)r  rO   rN   )rg   r   r   r,   r   r   	partitionr  r   rg  r#   rh   r   
rpartitionr_  s      r1   test_str_partitionr^    s   
)WdO:biikk+B+B
C
C
CCWs##F|			.../z"))++7N7N  H &(+++Ws511Fy,RXX7H7H7H$6O-P-PQQRRH68,,,W$$F|			.../z"))++7N7N  H &(+++WE22Fy,RXX7H7H7H$6O-P-PQQRRH68,,,,,r3   rsplitsplitc                \   t          j        dd gt          t                                                              } t          |j        |                       }t          j        t          t                              g dd g                              }t          j
        ||           d S )Nza1 cbc
brY   )a1cbcrO   )rg   r   r   r,   r   r   r   r#   rh   r   r   rF  r   r   r   s       r1   test_str_split_pat_nonere    s     )[$'z"))++/F/F
G
G
GC%WSWf%%''Fy,RXX7I7I7I46P-Q-QRRSSH68,,,,,r3   c            	     z   t          j        g dt          t                                                              } | j                            d          }t          j        t          t                              g dg dd g                              }t          j
        ||           | j                            dd          }t          j        t          t                              dd	gd
d	gd g                              }t          j
        ||           | j                            dd          }t          j        t          t                              ddgddgd g                              }t          j
        ||           | j                            ddd          }t          j        t          t                              g d                    t          t                              g d                    d          }t          j        ||           | j                            dd          }t          j        t          t                              g d                    t          t                              g d                    d          }t          j        ||           d S )Na1cbcba2cbcbNrY   rs   rb  rO   rO   a2rO   rO   r@   r  rb  bcbrl  z[1-2]T)r  rN   cbcb)r  r[  )rN   rN   N)ro  ro  Nr   r@   rE   rZ  rN   ri  Nro  NN)rg   r   r   r,   r   r   r`  r#   rh   r   r   r  rg  r_  s      r1   test_str_splitrs    sf   
)...j6M6M
N
N
NCW]]3FyBHH&6&6&68H8H8H$%OPPQQ H 68,,,W]]3!]$$FyBHHtUmdE]D%IJJKK H 68,,,W]]7$]//FyBHHsFmc6]D%IJJKK H 68,,,W]]7$t]<<F|"288,<,<,<#=#=>>"288,B,B,B#C#CDD	
 	
 H &(+++W]]3t],,F|"288,A,A,A#B#BCC"288,@,@,@#A#ABB	
 	
 H &(+++++r3   c            	        t          j        g dt          t                                                              } | j                            d          }t          j        t          t                              g dg dd g                              }t          j
        ||           | j                            dd          }t          j        t          t                              dd	gd
d	gd g                              }t          j
        ||           | j                            ddd          }t          j        t          t                              g d                    t          t                              g d                    d          }t          j        ||           | j                            dd          }t          j        t          t                              g d                    t          t                              g d                    d          }t          j        ||           d S )Nrg  rY   rs   rj  rk  r@   rm  a1cbrO   a2cbT)r  r[  )ru  rv  N)rO   rO   Nrp  rE   rZ  rq  rr  )rg   r   r   r,   r   r   r_  r#   rh   r   r   r  rg  r_  s      r1   test_str_rsplitrw    s   
)...j6M6M
N
N
NCW^^C  FyBHH&6&6&68H8H8H$%OPPQQ H 68,,,W^^C1^%%FyBHHvsmfc]D%IJJKK H 68,,,W^^C1T^22F|"288,B,B,B#C#CDD"288,<,<,<#=#=>>	
 	
 H &(+++W^^C^--F|"288,A,A,A#B#BCC"288,@,@,@#A#ABB	
 	
 H &(+++++r3   c                    t          j        dd gt          t                                                              } t          j        t          d          5  | j        	                    d           d d d            d S # 1 swxY w Y   d S )Nr  rY   z,str.extract not supported with pd.ArrowDtyper   z[ab](\d))
rg   r   r   r,   r   r)   r'   rf   r   extractr  s    r1   test_str_unsupported_extractrz    s    
)UDMBIIKK)@)@
A
A
AC	#Q
 
 
 % % 	$$$% % % % % % % % % % % % % % % % % %s   B  BBra  )r]  r\  r  r  c                    ddg}t                               |           }t          j        ||          }t          t                               dd g|                    }t          j        ||           d S )N1000NaTrY   i  r|  )r,   durationr#   r   rh   r   r   )ra  stringsr   r   r   s        r1   #test_duration_from_strings_with_natr    sm     uoGkk$G :7'RRRF"288T4Lw8#G#GHHH#FH55555r3   c                    | j         j        }t          j                            |          sOt          j        t          d          5  t          j	        |           j
         d d d            d S # 1 swxY w Y   d S d S )Nz2Can only use .dt accessor with datetimelike valuesr   )r9   r7   r,   rZ   r   r)   r'   AttributeErrorrg   r   r%  r   s     r1   test_unsupported_dtr  	  s    z'H8)) ]"V
 
 
 	 	 IdOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   A..A25A2zprop, expectedyear  dayday_of_week	dayofweekweekdayday_of_year	dayofyearhourminuteis_leap_yearz.is_leap_year not implemented for pyarrow < 8.0r&   )marksmicrosecondrM   month
nanosecondr  quartersecondrz   r   r   c                B   t          j        t          j        dddddddd	          d gt          t                              d
                              }t          |j        |           }d }t          |t                    rt          
                                }n/t          |t                    rt                              d
          }t          j        t          t                              |d g|                              }t          j        ||           d S )Nr  r@   rD   r  r;   rz   rM   r  )r  r  r  r  r  r  r  r  r]  rY   r|  )rg   r   r  r   r,   r  r   r%  r   r   r  r   time64r#   rh   r   r   )propr   r   r   exp_types        r1   test_dt_propertiesr  	  s	   > )L	 	 	 	
 d++,,  C  SVT""FH(D!! #99;;	Hd	#	# #99T??y,RXXx6FXX-V-VWWXXH68,,,,,r3   c            
     ^   t          j        t          dddd          t          dddd          t          dddd          d gt          t                              d                    	          } | j        j        }t          j        g d
t          t                                                    	          }t          j
        ||           | j        j        }t          j        g dt          t                                                    	          }t          j
        ||           d S )Nr  rI   rD   r  r  r  r  r  r@   rJ   r\  rY   FTFNFFTN)rg   r   r   r   r,   r  r%  is_month_startr  r   r   is_month_endr_  s      r1   test_dt_is_month_start_endr  D	  s   
)$baa888$aQQ777$aRa888		
 d++,,  C V"Fy333:bhhjj;Q;QRRRH68,,,V Fy333:bhhjj;Q;QRRRH68,,,,,r3   c            
     ^   t          j        t          dddd          t          dddd          t          dddd          d gt          t                              d                              } | j        j        }t          j        g d	t          t                                                              }t          j
        ||           | j        j        }t          j        g d
t          t                                                              }t          j
        ||           d S )Nr  rI   rJ   r  r  r@   r\  rY   r  )TFFN)rg   r   r   r   r,   r  r%  is_year_startr  r   r   is_year_endr_  s      r1   test_dt_is_year_start_endr  W	  s   
)$bbq999$aQQ777$aRa888		
 d++,,  C V!Fy333:bhhjj;Q;QRRRH68,,,VFy333:bhhjj;Q;QRRRH68,,,,,r3   c            
     ^   t          j        t          dddd          t          dddd          t          dddd          d gt          t                              d                    	          } | j        j        }t          j        g d
t          t                                                    	          }t          j
        ||           | j        j        }t          j        g dt          t                                                    	          }t          j
        ||           d S )Nr        r  r  r@   rJ   r\  rY   r  r  )rg   r   r   r   r,   r  r%  is_quarter_startr  r   r   is_quarter_endr_  s      r1   test_dt_is_quarter_start_endr  j	  s   
)$bbq999$aQQ777$aRa888		
 d++,,  C V$Fy333:bhhjj;Q;QRRRH68,,,V"Fy333:bhhjj;Q;QRRRH68,,,,,r3   days_in_monthdaysinmonthc           
        t          j        t          dddd          t          dddd          t          dddd          d gt          t                              d                    	          }t          |j        |           }t          j        g d
t          t                                                    	          }t          j
        ||           d S )Nr  r  r  r  r;   r@   rD   r\  rY   )rJ   r     N)rg   r   r   r   r,   r  r   r%  r  r   r   rd  s       r1   test_dt_days_in_monthr  }	  s    
)$aRa888$aQQ777$aQQ777		
 d++,,  C SVV$$Fy+++:bhhjj3I3IJJJH68,,,,,r3   c                 &   t          j        t          ddd          t          dddd          t          dddd	d
d
          d gt          t                              d                              } | j                                        }t          j        t          ddd          t          ddd          t          ddd          d gt          t                              d                              }t          j	        ||           d S )Nr  r  r  r  r  r  r;   r@   r  rD      ;   )r  r  r  r  r  r  r\  rY   )
rg   r   r   r   r,   r  r%  rI  r   r   r_  s      r1   test_dt_normalizer  	  s   
)$aR000$aQQ777$aQR2NNN		
 d++,,  C VFy$aR000$aQ///$aQ///		
 d++,,  H 68,,,,,r3   r\  r]  c           
        t          j        t          dddd          d gt          t                              |                               }|j        j        | k    sJ |j        j        }t          j        t          t          
                    t          dd          d gt                              |                                         }t          j        ||           d S )	Nr  r@   rD   r  r  rY   r   r|  )rg   r   r   r   r,   r  r%  ra  r   r#   rh   r  r   r   ra  r   r   r   s       r1   test_dt_time_preserve_unitr  	  s    
)	t1!!	4	4	4d;d++,,  C 6;$V[FyBHHd1ajj$%7biiooHNNOO H 68,,,,,r3   r   )Nr  
US/Pacificc           	         t          j        t          dddd          d gt          t                              d|                               }|j        j        }|t          j	        |           k    sJ d S )	Nr  r@   rD   r  r  r]  r   rY   )
rg   r   r   r   r,   r  r%  r   r   maybe_get_tz)r   r   r   s      r1   
test_dt_tzr  	  sy    
)	t1!!	4	4	4d;dr2233  C VYFY+B////////r3   c                 <   t          j        t          dddd          d gt          t                              d                              } | j                                        }t          j        g dg d	gg d
d          }t          j
        ||           d S )Nr  r@   rD   r  r  r]  rY   )r  r@   r@   r  )r  weekr  r   r$  r9   )rg   r   r   r   r,   r  r%  isocalendarr  r   rg  r_  s      r1   test_dt_isocalendarr  	  s    
)	t1!!	4	4	4d;d++,,  C V!!F|	yyy!'''  H
 &(+++++r3   day_nameSunday
month_nameJanuaryc                   t          |           t          j        t          ddd          d gt	          t
                              d                              } t          |j        |                       }t          j        |d gt	          t
          	                                                    }t          j        ||           d S )Nr  r@   r  rY   )r2   rg   r   r   r   r,   r  r   r%  r   r   r   )rF  r  r0   r   r   r   s         r1   test_dt_day_month_namer  	  s    
 w'''
)XdAq))40
2<<PTCUCU8V8V
W
W
WC$WSVV$$&&Fy#tJryy{{,C,CDDDH68,,,,,r3   c                   t          |            t          j        t          dddd          d gt	          t
                              d                              }|j                            d          }t          j        d	d gt	          t
          	                                                    }t          j        ||           d S )
Nr  r@   rD   r  r  r]  rY   z%Y-%m-%dT%H:%M:%Sz2023-01-02T03:00:00.000000000)r2   rg   r   r   r   r,   r  r%  strftimer   r   r   )r0   r   r   r   s       r1   test_dt_strftimer  	  s    w'''
)	t1!!	4	4	4d;d++,,  C V__011Fy	($/z"))++7N7N  H 68,,,,,r3   )ceilr&  r  c                   t          j        t          dddd          d gt          t                              d                              }t          j        t          d	          5   t          |j
        |           d
d           d d d            n# 1 swxY w Y   t          j        t          d	          5   t          |j
        |           d
d           d d d            d S # 1 swxY w Y   d S )Nr  r@   rD   r  r  r]  rY   zambiguous is not supported.r   1Hr}  	ambiguousznonexistent is not supported.nonexistent)rg   r   r   r   r,   r  r)   r'   rf   r   r%  rF  r   s     r1   *test_dt_roundlike_tz_options_not_supportedr  	  su   
)	t1!!	4	4	4d;d++,,  C 
*2O	P	P	P 7 766667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 
*2Q	R	R	R 9 9%88889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s$   *!BBB=!C++C/2C/c                   t          j        t          dddd          d gt          t                              d                              }t          j        t          d	          5   t          |j
        |           d
           d d d            n# 1 swxY w Y   t          j        t          d	          5   t          |j
        |           d            d d d            d S # 1 swxY w Y   d S )Nr  r@   rD   r  r  r]  rY   zfreq='1B' is not supportedr   1Bz$Must specify a valid frequency: None)rg   r   r   r   r,   r  r)   r'   rb  r   r%  r  s     r1   "test_dt_roundlike_unsupported_freqr  	  si   
)	t1!!	4	4	4d;d++,,  C 
z)E	F	F	F & &%%%& & & & & & & & & & & & & & & 
z)O	P	P	P & &%%%& & & & & & & & & & & & & & & & & &s$   *BBB;C''C+.C+z'Methods not supported for pyarrow < 7.0freq)DHTSLUNc                   t          j        t          ddd          d g          }t          t                              d                    } t          |j        |          d|                                |          } t          |                    |          j        |          d|            }t          j
        ||           d S )Nr  r@   r  r]  rE   )rg   r   r   r   r,   r  r   r%  r   r   r   )r  rF  r   ri   r   r   s         r1   test_dt_ceil_year_floorr   
  s     )	t1!	,	,	,d3 C ",,t,,--H&wsvv&&z4zz2299(CCH5WSZZ)),f55j$jjAAF68,,,,,r3   c                    t          ddd          t          ddd          g} t          j        | t          t                              d                              }d}t          j        t          |          5  |j	        
                                }d d d            n# 1 swxY w Y   t          j        | t                    }t          j        ||           t          d |D                       sJ d	}t          j        t          |          5  |                    d
          j	        
                                }d d d            n# 1 swxY w Y   t          j        ||           d S )NrG   r@   r  r]  rY   CThe behavior of ArrowTemporalProperties.to_pydatetime is deprecatedr   c              3  B   K   | ]}t          |          t          u V  d S r   )rm   r   ).0ress     r1   	<genexpr>z(test_dt_to_pydatetime.<locals>.<genexpr>
  s-      77tCyyH$777777r3   z>The behavior of DatetimeProperties.to_pydatetime is deprecatedzdatetime64[ns])r   rg   r   r   r,   r  r   assert_produces_warningFutureWarningr%  r$  rd  rh   r  rd  r   r   )rj   r   r(  r   r   s        r1   test_dt_to_pydatetimer  
  s   T1a  (4A"6"67D
)D
2<<+=+= > >
?
?
?C
OC		#M	=	=	= ( (%%''( ( ( ( ( ( ( ( ( ( ( ( ( ( (xF+++H1117777777777
JC		#M	=	=	= C C::.//2@@BBC C C C C C C C C C C C C C C11111s$   ;B!!B%(B%-EEE	date_typer   @   c                   t          j        t          ddd          gt           t	          t
          d|                                            }d}t          j        t          |          5  t          j
        t          d          5  |j                                         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	NrG   rI   rJ   r   rY   r  r   z#to_pydatetime cannot be called with)rg   r   r   r   r   r,   r   r  r  r)   r'   rb  r%  r$  )r  r   r(  s      r1    test_dt_to_pydatetime_date_errorr  !
  sT    )	dB		8%7I%7%788::;;  C PC		#M	=	=	= # #]:-RSSS 	# 	#F  """	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	## # # # # # # # # # # # # # # # # #s6   /C	B1%C	1B5	5C	8B5	9C		CCc                    t          j        t          dddd          d gt          t                              d                              } t          j        t          d	          5  | j	        
                    d
d           d d d            n# 1 swxY w Y   t          j        t          d	          5  | j	        
                    d
d           d d d            d S # 1 swxY w Y   d S )Nr  r@   rD   r  r  r]  rY   z ambiguous='NaT' is not supportedr   r  r}  r  z"nonexistent='NaT' is not supportedr  )rg   r   r   r   r,   r  r)   r'   rf   r%  tz_localizer  s    r1   *test_dt_tz_localize_unsupported_tz_optionsr  .
  si   
)	t1!!	4	4	4d;d++,,  C 
*2T	U	U	U 3 35E2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
*2V	W	W	W 5 55e4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s$   *BBB9C##C'*C'c            	        t          j        t          dddd          d gt          t                              dd                    	          } | j                            d           }t          j        t          dddd          d gt          t                              d                    	          }t          j	        ||           d S )
Nr  r@   rD   r  r  r]  r  r  rY   )
rg   r   r   r   r,   r  r%  r  r   r   r_  s      r1   test_dt_tz_localize_noner  :
  s    
)	t1!!	4	4	4d;d|<<==  C V%%Fy	t1!!	4	4	4d;d++,,  H 68,,,,,r3   c                .   t          |           t          j        t          dddd          d gt	          t
                              |                               }|j                            d          }t
          	                    t          dddd          d gt
                              |                     }t
          j
                            |d          }t          j        t          |                    }t          j        ||           d S )	Nr  r@   rD   r  r  rY   r  r|  r2   rg   r   r   r   r,   r  r%  r  rh   computeassume_timezoner#   r   r   )ra  r0   r   r   exp_datar   s         r1   test_dt_tz_localizer  G
  s    w'''
)	t1!!	4	4	4d;d++,,  C V--Fxx	t1!!	4	4	4d;",,tBTBT   H z))(LAAHy,X6677H68,,,,,r3   znonexistent, exp_dateshift_forwardrI   r  shift_backwardz2023-03-12 01:59:59.999999999c           	        t          |           t          j        t          ddddd          d gt	          t
                              d                              }|j                            d	| 
          }t
          	                    |d gt
                              d                    }t
          j
                            |d	          }t          j        t          |                    }t          j        ||           d S )Nr  r  rI   rD   r  )r  r  r  r  r  r]  rY   r  r  r|  r  )r  exp_dater0   r   r   r  r   s          r1   test_dt_tz_localize_nonexistentr  X
  s     w'''
)	t1"1R	@	@	@$Gd++,,  C V+FFFxx4(r||D/A/AxBBHz))(LAAHy,X6677H68,,,,,r3   c                 >   t          j        t          dddd          d gt          t                              d                              } t          j        t          d	          5  | j	        
                    d
           d d d            d S # 1 swxY w Y   d S )Nr  r@   rD   r  r  r]  rY   z"Cannot convert tz-naive timestampsr   r  )rg   r   r   r   r,   r  r)   r'   r   r%  
tz_convertr  s    r1    test_dt_tz_convert_not_tz_raisesr   m
  s    
)	t1!!	4	4	4d;d++,,  C 
y(L	M	M	M ! !%   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   *BBBc            	        t          j        t          dddd          d gt          t                              dd                              } | j                            d           }t          j        t          dddd          d gt          t                              d                              }t          j	        ||           d S )	Nr  r@   rD   r  r  r]  r  rY   
rg   r   r   r   r,   r  r%  r  r   r   r_  s      r1   test_dt_tz_convert_noner  v
  s    
)	t1!!	4	4	4d;dL99::  C Vt$$Fy	t1!!	4	4	4d;d++,,  H 68,,,,,r3   c           	        t          j        t          dddd          d gt          t                              | d                              }|j                            d          }t          j        t          dddd          d gt          t                              | d                              }t          j	        ||           d S )	Nr  r@   rD   r  r  r  rY   z
US/Easternr  r  s       r1   test_dt_tz_convertr  
  s    
)	t1!!	4	4	4d;dL99::  C V|,,Fy	t1!!	4	4	4d;dL99::  H 68,,,,,r3   r   c                    t          j        d gd          } t          ||           |          }|r| dk    }nt           j        }||u sJ d S )Nr  rY   r   r   )rg   r   r   r  )r  r   r   r   r   s        r1   #test_boolean_reduce_series_all_nullr  
  sj     )TF"4
5
5
5C1WS011@@@F )U25Xr3   c                 &   g d} g d}d g}| |z   |z   }dgt          |           z  dgt          |          z  z   d gt          |          z  z   }t          j        |t                                                    }t          j        |d          }t          j        ||           ddg}t          j
        t          j        d	
          5  t          j        |t                                                     d d d            d S # 1 swxY w Y   d S )N)trueTRUETruerE   r^  )falseFALSEFalse0rF   TFrY   r  r  rw  zFailed to parser   )r  r#   r   r,   r  rg   rh   r   r   r)   r'   r-   )true_stringsfalse_stringsnullsr  boolsr   r   s          r1   %test_from_sequence_of_strings_booleanr  
  sj   777L;;;MFE]*U2G	\"""eWs=/A/A%AATFSQVZZDWW 
 !:7"((**UUUFx%7888H#FH555uoG	r.?	@	@	@ Q Q5gRXXZZPPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs   .DD
D
c                    t          j        g |           }|                                }t          j        |t	          j        g t          j                           g          }t          j        ||           d S r  )	rg   r   rq  concatrd  rh   r  r   r   )r9   r   r   r   s       r1   %test_concat_empty_arrow_backed_seriesr  
  sd    
)Be
$
$
$CxxzzHYBHRrx8889:;;F68,,,,,r3   r9   r   zstring[pyarrow]c                    t                               d                                          }t          j        ||           }t          j        t          |          |           }t          j        ||           d S )Nzthe quick brown foxrY   )r,   rh   r`  rg   r   r#   r   r   )r9   r  r   r   s       r1   test_series_from_string_arrayr  
  sj    
(((..00
1
1C
)Cu
%
%
%Cy,S11???H3)))))r3   c                       e Zd Z fdZ xZS )OldArrowExtensionArrayc                x    t                                                      }|                    d          |d<   |S )Nr   _data)r   __getstate__pop)r   stater   s     r1   r  z#OldArrowExtensionArray.__getstate__
  s2    $$&&;//gr3   )r   r   r   r  r   r   s   @r1   r  r  
  s8                r3   r  c                 >   t                               dg          } t          |           }t          j        t          j        |                    }t          j        ||           |j        t           	                    |           k    sJ t          |d          rJ d S )Nr@   r  )r,   rh   r  rQ  rS  rR  r   r   r   chunked_arrayhasattr)rj   r   r   s      r1   #test_pickle_old_arrowextensionarrayr$  
  s    88QC==D%d++H\&,x0011F#FH555r//555555vw'''''''r3   c                 ,   d} t          t                              t          j        | ft          j                  g                    }|                                }d|t          j        | ft          j                  <   |j        |j        k    sJ d S )Nih6 rY   F)	r#   r,   r"  rd  onesr  rq  zerosr   )r  r  r   s      r1   /test_setitem_boolean_replace_with_mask_segfaultr(  
  s~    A
b..BH0M0M0M/NOO
P
PCxxzzH*/C!RX&&&'=H.......r3   zdata, arrow_dtyperS   rT   c                    t          |          }t          j        t          j        |           |          }t          j        | |          }t	          j        ||           d S r  )r   rg   rh   rd  r   r   )rj   r:  r9   r   r   s        r1   -test_conversion_large_dtypes_from_numpy_arrayr*  
  sZ     {##EXbhtnnE222FxE***H#FH55555r3   c                 D   t          j        dd d git          t                                                              } t          j        dddgid          }t          j        | |gd          }t          j        dg did          }t          j        ||           d S )	NrN   rY   r   r@   r   T)ignore_index)NNr   r@   )rg   r  r   r,   nullr  r   rg  )r'  df2r   r   s       r1   test_concat_null_arrayr/  
  s    	sT4L)BGGII1F1F	G	G	GB
,aV},<
=
=
=CYCyt444F|S"4"4"45=MNNNH&(+++++r3   c                    t          j        g dt          |                     }|                                }t          j        g dt          t                                                    g d          }t          j        ||           d S )Nr@   rD   r  rY   )r  rD   r@   r@   r  g       @r  r  r   r   r   r  25%50%75%r  r9   r_  )rg   r   r   describer,   r  r   r   r   rj   r   r   s       r1   test_describe_numeric_datar9  
  s     9YYYj&9&9:::D]]__Fy&&&&&III  H
 68,,,,,r3   c                X   t          j        t          dd          t          |                     }|                                }t          j        dgt          j        g d| j                                                  z   t          g d          }t          j
        ||           d S )	Nr@   rL   rY   	   )rM   rD   r@   r  rM   rz   r;  ra  r2  r6  )rg   r   r  r   r7  to_timedeltara  rr  r  r   r   r8  s       r1   test_describe_timedelta_datar>  
  s     9U1b\\G)<)<===D]]__Fy	
bo333',GGGNNPPPIII  H
 68,,,,,r3   c                    t          j        t          dd          t                               }|                                }t          j        dg fddD             z   t
          g d          }t          j        ||           d S )	Nr@   rL   rY   r;  c                R    g | ]#}t          j        |j        j                   $S ))r   ra  )rg   r  r   ra  )r  vr   s     r1   
<listcomp>z/test_describe_datetime_data.<locals>.<listcomp>  s>     
 
 
 Lwz===
 
 
r3   )rM   r@   r  rM   rz   r;  )r   r   r  r3  r4  r5  r  r6  )rg   r   r  r   r7  r  r   r   r8  s   `   r1   test_describe_datetime_datarC  
  s     9U1b\\G)<)<===D]]__Fy	

 
 
 
'
 
 
	

 BBB  H 68,,,,,r3   c                    g d}t          j        |t          |                     }|                    d          }|d         }||k    sJ d S )Nr1  rY   g?r   )rg   r   r   r  )r   rj   r   r   r   s        r1   test_quantile_temporalrE    sZ    
 99D
)D
7 3 3
4
4
4C\\#F1vHXr3   c                    t                               t          j        d          gt                                                     } t          j        | t          | j                            }t          |          dk    sJ d S )Nz
2020-01-01r|  rY   z+0    2020-01-01
dtype: date32[day][pyarrow])
r,   rh   r   fromisoformatr  rg   r   r   rm   repr)arrow_dtr   s     r1   test_date32_reprrJ  '  si    xx+L99:xMMH
)HJx}$=$=
>
>
>C99FFFFFFFr3   z9Function 'add_checked' has no kernel matching input typesc                    t          j        dd g          } t          j        dd g          }t          j        | t	          t
                              d                              }t          j        |t	          t
                              d                              }||z   }t          j        dd gt	          t
                              d                              }t          j	        ||           d S )Nr@   r]  rY   rD   )
rg   to_datetimer=  r   r   r,   r  r~  r   r   )data_tsdata_tdser_tsser_tdr   r   s         r1   2test_duration_overflow_from_ndarray_containing_natrQ  .  s     naY''Goq$i((GYwjd1C1C&D&DEEEFYwjT1B1B&C&CDDDFf_Fy!T*R\\$5G5G*H*HIIIH68,,,,,r3   c                   t          j        |           }|dk    sJ | j        r>|dv r:t          j                            d          }|j                            |           |t          j        t          |           d          k    sJ d S )Nzunknown-array)floating
datetime64timedelta64zfin infer_dtype pd.NA is not ignored in these cases even with skipna=True in the list(data) check belowr   Tr   )	r   infer_dtyperc  r)   r*   r+   r.   r/   rb  )rj   r0   r  r*   s       r1   test_infer_dtype_pyarrow_dtyperW  >  s    
/$

C/!!!!{ &sGGG{  B ! 
 
 	%%%#/$t**T:::::::::r3   c                   d}| j         }t          j                            |           r+t	          j        ||                              |          g}n0t	          j        ||| j                                      |          g}t          j
        ||           }t          t                              |g|                     }t          j        ||           d S )Nr  r<  ra  r   rY   r|  )ra  r,   rZ   rb   rg   	Timedeltaas_unitr  r   r#   rn   rh   r   r   )r   r$  ra  seqr   r   s         r1   test_from_sequence_temporalr]  L  s    
 C<D	xG$$ J|Cd+++33D99:|Cdwz:::BB4HHI /7CCCF"288SE8#@#@AAH#FH55555r3   c                   | j         }t          j                            |           r*t	          j        d|                              |          }n/t	          j        d|| j                                      |          }t          t          
                    g d|                     }|                                }||d d <   t          t          
                    g d|                     }t          j        ||           d S )Nr@   r<  rY  r1  r|  )r@   r@   r@   )ra  r,   rZ   rb   rg   rZ  r[  r  r   r#   rh   rq  r   r   r   ra  r$  r  r   r   s         r1   test_setitem_temporalr`  ]  s    
 <D	xG$$ Fl14(((0066l14GJ777??EE
bhhyyywh??
@
@CXXZZFF111I"288IIIG8#D#DEEH#FH55555r3   c                   t           rdt          j                            |           rEt          j                            t          j        d          }|j        	                    |           t          t                              g d|                     }| j        }|t          j        d|                              |          z
  }t          t                              g d|                     }t!          j        ||           d S )Nz>Function 'subtract_checked' has no kernel matching input typesr&   r1  r|  r@   r<  )r   r@   rD   )r   r,   rZ   rb   r)   r*   r+   r   r.   r/   r#   rh   ra  rg   rZ  r[  r   r   )r   r0   r*   r  ra  r   r   s          r1   test_arithmetic_temporalrb  p  s    
  &rx33G<< &{  .S ! 
 
 	%%%
bhhyyywh??
@
@C<D2<---55d;;;F"288IIIG8#D#DEEH#FH55555r3   c                   | j         }t          j                            |           r*t	          j        d|                              |          }n/t	          j        d|| j                                      |          }t          t          
                    g d|                     }||k    }t          t          
                    g dt                                                              }t          j        ||           d S )Nr@   r<  rY  r1  r|  )FTT)ra  r,   rZ   rb   rg   rZ  r[  r  r   r#   rh   r  r   r   r_  s         r1   test_comparison_temporalrd    s    
 <D	xG$$ Fl14(((0066l14GJ777??EE
bhhyyywh??
@
@C3YF"288,?,?,?bhhjj8#Q#QRRH#FH55555r3   c                (   t          t                              g d|                     }|d         }t          j                            |           rPt          j        d| j                                      | j                  }t          |t
          j                  sJ nUt          j
        d| j        | j                                      | j                  }t          |t
          j
                  sJ |j        |j        k    sJ ||k    sJ d S )Nr1  r|  r@   rD   r<  rY  )r#   r,   rh   rZ   rb   rg   rZ  ra  r[  r   r  r   r   r  r   r   s       r1   test_getitem_temporalrg    s    
 bhhyyywh??
@
@CVF	xG$$ 0<555==glKK&",//////<DDDLLL
 
 &",/////;(-''''Xr3   c                   t          t                              dd g|                     }t          |          }t          j                            |           rbt          j        d| j                  	                    | j                  t          j
        g}t          |d         t          j                  sJ ngt          j        d| j        | j                  	                    | j                  t          j
        g}t          |d         t          j                  sJ |d         j        |d         j        k    sJ ||k    sJ d S )Nr@   r|  r<  r   rY  )r#   r,   rh   rb  rZ   rb   rg   rZ  ra  r[  r  r   r  r   rf  s       r1   test_iter_temporalri    s"   
 bhh4ywh??
@
@C#YYF	xG$$ 3L...66w|DDE
 &)R\222222 L'*===EEglSSE
 &)R\22222!9>Xa[-----Xr3   c                    t          j        | d d         g d          }|                    d                                          }t          j        ddgdd	d
g          }t	          j        ||           d S )Nr  )rN   rN   rO   r"  r   )levelrD   r@   r   rN   rO   r6  )rg   r   r#  sizer   r   )rj   r   r   r   s       r1   'test_groupby_series_size_returns_pa_intrm    sy    
)D!HOOO
4
4
4C[[q[!!&&((Fy!Q'7SzJJJH68,,,,,r3   c                   t          t                              dd g|                     }|                                }t          j                            |           rbt          j        d| j                  	                    | j                  t          j
        g}t          |d         t          j                  sJ ngt          j        d| j        | j                  	                    | j                  t          j
        g}t          |d         t          j                  sJ t          j        |t                    }|d         j        |d         j        k    sJ t!          j        ||           d S )Nr@   r|  r<  r   rY  rY   )r#   r,   rh   r  rZ   rb   rg   rZ  ra  r[  r  r   r  r   rd  r  r   rd  rf  s       r1   test_to_numpy_temporalro    s:   
 bhh4ywh??
@
@C\\^^F	xG$$ 3L...66w|DDE
 &)R\222222 L'*===EEglSSE
 &)R\22222x///H!9>Xa[-----11111r3   c                   t          j        ddg| | d          }|                    d                                          }t          j        ddggt          j        dgd          ddgd          }t          j        ||           d S )	Nr@   r  ru   )r  rv   rw   r   )r_  r$  r9   )rg   r  r#  r   r   r   rg  )ro   r'  r   r   s       r1   %test_groupby_count_return_arrow_dtyperq    s    	QFLII	J	JBZZ__""$$F|
Qhs%%%c
	  H &(+++++r3   c            	         t          j        ddgddggt          t                              t                                          d                              } | j        j        }|t          k    sJ d S )Nr@   rD   r  r;   )	list_sizerY   )	rg   r   r   r,   r?  r  r9   rm   rb  )r   r   s     r1   test_fixed_size_listrt    sf    
)
Q!Q
288BHHJJ!8+L+L M M  C Y^FT>>>>>>r3   c            	         t          j        t          j        dd          dgt          t	          d                              } t          |           }d}||k    sJ d S )N2012r  )rp  colr  r  z#     col
0  15340
1  15341
2  15342)rg   r  period_ranger   r$   rH  )r'  r   r   s      r1   'test_arrowextensiondtype_dataframe_reprry    sm    	
***--..
 
 
B
 "XXF 8HXr3   c                T   t          j        d dgt          |                     }t          j        t          j        ddgd| j         d                    }|                    |          }t          j        ddgt          |                     }t          j        ||           d S )NrD   rY   r@   r  zm8[r  )	rg   r   r   rd  rh   ra  rH  r   r   )r   ser1ser2r   r   s        r1   test_duration_fillna_numpyr}    s     9dAYj&9&9:::D9RXq!f,A',,A,A,ABBBCCD[[Fy!Qz'':':;;;H68,,,,,r3   c                     t          j        dgd          } t          j        d gd          }t          j        t          j        j        d          5  | |k      d d d            d S # 1 swxY w Y   d S )Nl            r  rY   r   zInteger valuer   )rg   r   r)   r'   r,   r   r-   r  s     r1   +test_comparison_not_propagating_arrow_errorr    s    
	7)#4555A
	4& 0111A	rv*/	B	B	B  	A                 s   A((A,/A,c                 X   t                               t                               dg                                          t                               dg                                          g          } t	          j        t          |                     }|                                \  }}t          j        ddgt          j	                  }t	          j
        t          |                                                     }t          j        ||           t          j        ||           d S )NrN   rO   r   r@   rY   )r,   r"  rh   dictionary_encoderg   r   r#   	factorizerd  intpr   r   r   rd  r%  )r   r   res_indicesres_uniquesexp_indiciesexp_uniquess         r1   !test_factorize_chunked_dictionaryr    s    	3%	*	*	,	,bhhuoo.O.O.Q.QR H )'11
2
2C"}}K8QF"'222L(.x/F/F/H/HIIJJK\:::+{33333r3   c                     t          j        dgd          } t          j        dgd          }t          j        dgd          }| |z  }t          j        ||           d S )Nir   rY   r;   rA   r  )rN   rO   r   r   s       r1   test_arrow_floordivr  !  si    
	2$.///A
	1#-...Ay"%5666H!VF68,,,,,r3   c            	         g d} t          j        | d          }t          j        t          t                              t          j        |           d                              }t          j        ||           d S )N)z2020-01-01 04:30:00z2020-01-02 00:00:00z2020-01-03 00:00:00ztimestamp[ns][pyarrow]rY   T)from_pandas)rg   r   r#   r,   rh   rL  r   r   )string_datesr   r   s      r1   $test_string_to_datetime_parsing_castr  *  ss    XXXLY|+CDDDFyBHHR^L%A%AtHTTUU H 68,,,,,r3   (  r  
__future__r   r   r   r   r   decimalr   ior	   r
   r  rQ  r!  numpyrd  r)   pandas._libsr   pandas._libs.tslibsr   pandas.compatr   r   r   r   r   r   r   r   r   pandas.core.dtypes.dtypesr   r   pandasrg   pandas._testing_testingr   pandas.api.extensionsr   pandas.api.typesr   r   r   r   r   r   r   pandas.tests.extensionr    importorskipr,   pandas.core.arrays.arrow.arrayr#   (pandas.core.arrays.arrow.extension_typesr$   r2   fixtureALL_PYARROW_DTYPESr   r9   rj   ro   rq   rx   r|   r   r   BaseCastingTestsr   BaseConstructorsTestsr   BaseGetitemTestsr   BaseAccumulateTestsr   BaseReduceTestsr   BaseGroupbyTestsr  BaseDtypeTestsr*  BaseIndexTestsr:  BaseInterfaceTestsr<  BaseMissingTestsrC  BasePrintingTestsrL  BaseReshapingTestsrN  BaseSetitemTestsrS  BaseParsingTestsrW  BaseUnaryOpsTestsrk  BaseMethodsTestsro  BaseArithmeticOpsTestsr  BaseComparisonOpsTestsr  r  r*   r   ALL_INT_PYARROW_DTYPESr  r  r  r  r)  r2  r5  r9  byteslarge_binarylarge_stringr?  r  rb  
large_listmap_r   structr  dictr  r<  rC  rF  rH  rJ  rL  rN  rX  r\  r`  re  rh  re  rm  ro  rt  rz  skipifr  r  r  r  r  r  r  r  r  r  r  r  compiler  r  r  r+   rf   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r+  r0  r;  r@  rD  rJ  rM  rQ  rT  rW  r^  re  rs  rw  rz  r  r  r8   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r$  r(  r*  r/  FLOAT_PYARROW_DTYPESr9  TIMEDELTA_PYARROW_DTYPESr>  DATETIME_PYARROW_DTYPESrC  rE  rJ  r   rQ  rW  r]  r`  rb  rd  rg  ri  rm  ro  rq  rt  ry  r}  r  r  r  r  r   r3   r1   <module>r     s0    # " " " " "                           				            ) ) ) ) ) )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
       
           , , , , , ,                  ( ' ' ' ' 'Vw777 > > > > > > D D D D D D	& 	& 	& r,#6663 3 763 8' 8' 8'v H H H
 /000  10 7A 7A 7At 
 
 
 
 
 
   	& 	& 	& 	& 	&d+ 	& 	& 	&;6 ;6 ;6 ;6 ;6t1 ;6 ;6 ;6|	 	 	 	 	t, 	 	 	M4 M4 M4 M4 M4d6 M4 M4 M4`U U U U U% U U Up? ? ? ? ?d+ ? ? ?,A3 A3 A3 A3 A3D' A3 A3 A3H	 	 	 	 	D' 	 	 	         /      6 6 6 6 6d+ 6 6 6	 	 	 	 	t- 	 	 	% % % % %/ % % %3 3 3 3 3d+ 3 3 3$0 $0 $0 $0 $0d+ $0 $0 $0N
" 
" 
" 
" 
"t- 
" 
" 
">1 >1 >1 >1 >1d+ >1 >1 >1Bp; p; p; p; p;D7 p; p; p;f	(1 (1 (1 (1 (1D7 (1 (1 (1V^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1B B$=>>- - ?>-0C C C  + + + III  cC:%677I1 I1 87 I1X 1a&!$6$6$6#<=	}%   
- - 
-	- 	- 	-  	e	2			E"			C 	"((**		t$	rxxzz	"	"D)	bhhjj	)	)40	T27799%biikk':;	<	<dC	rxxzz288::	.	.0DE
 9 9 9- - -
* 
* 
** * *1 1 13 3 3( ( (; ; ; 2 2 2- - -2 2 2*2 2 2 #."&)A6(JKK2 2 LK22 2 26 6 6.  . '0IJJ- - KJ- '0FGGQ Q HGQ- - -  ", , ,  455- - 65-& & & (7G*<vx>PQ - - -# # # 	udED$<0	tT55$-0	udED$<0	eT4$6	dD$6	 	- -	 	-' ' ' 	tTD$<0	sEE5>2	S$.	T4$.	 - - - ZRZ__}vuo|L " "	 " 	c2uvtn-	c1efd^,	#r4&$0 - - -   (   
- - 
- 	udT4L)	tTE4=)	tTE4=)	udT4L)	eTD$<0	dD5$-0
 
- -
 
- 	tdD\*	dUDM*	tTE4=)	udT4L)	eTD$<0	dD5$-0
 
- -
 
- #
AtaY

+dAq1d)RXXZZ-PQ - -	 -$ $ $ 	
		
		
	 	- -	 	- J   - -	 -- - - 	q$t%	q!dD\"	
Aq4, - - - 	
AsVTN#	q#t}%	q$t% - - -    !!!   !!!!!!"""   !!!"""###%%%&&&   !!!% .- -/ .- 	y!	)	Y	)	)	Y
 
- -
 
-- - -          
 
- -
 
- 5 122- - 32- 5 122- - 32- Hh#788		LM - -  98- 1a&))- - *)- GX#677	
D		
A 4 4  874 %11- - 21- 	
D		
A - - -- - -- - -, , ,- - -. Hg#677- - 87-%, %, %,P, , ,D% % % !8!8!8996 6 :96   		
		a	A		a		1+###*G $  	
 	
 	
 
	!	q	A	1	dAq!!"	aAq!!"3 <- -= <-6- - -&- - -&- - -& O]#CDD- - ED-- - -. $..- - /.- :::;;0 0 <;0, , , Z*\9,EF - - -- - - #=#=#=>>	9 	9 ?>	9 #=#=#=>>	& 	& ?>	&  I    !D!D!DEE#=#=#=>>- - ?> FE 
-2 2 2$ r2h//	# 	# 0/	#	5 	5 	5
- 
- 
- $..- - /.-  	((A2AFFFG	<2<(GHHI - - -! ! !
- 
- 
- $..
- 
- /.
- D%=11  21Q Q Q$- - - 8->"?@@* * A@*    0   ( ( (/ / / 
r(()
sR__&&' 6 6 6, , , B$=@W$WXX	- 	- YX	- B$?@@	- 	- A@	- B$>??- - @?-  r)B,GG   G G G F&   
- - 
-; ; ; r)B,GG 6 6 6 r)B,GG 6 6 6  r)B,GG 6 6 6  r)B,GG 6 6 6 r)B,GG     r)B,GG   (- - - r)B,GG 2 2 2*	, 	, 	,     B$?@@- - A@-  
4 
4 
4- - -- - - - -r3   