o
    թZhP-                    @   sj  d dl mZ d dlmZ d dlZd dlmZ d dlZd dl	Z	d dl
mZ d dlmZmZ d dlmZ d dlm  mZ d dlZd dlmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z' d d	l(m)Z)m*Z* e rse pue Z+e p{e Z,d@d
dZ-						dAddZ.e	j/dd Z0e	j/dd Z1G dd dZ2G dd dZ3G dd dZ4G dd dZ5dd Z6e	j7j8e d d!d"d# Z9e	j7:d$g d%e	j7:d&d'd(gd)d* Z;e	j7:d+ed,ej<gd-d. Z=d/d0 Z>e	j7:d&g d1e	j7:d$ddge	j7:d2d3d4gd5d6 Z?e	j7:d7g d8d9d: Z@e	j7:d&g d;e	j7:d<d d=gd>d? ZAdS )B    )	timedelta)DecimalN)tzlocal)using_pyarrow_string_dtype)IS64is_platform_windows)np_version_gt2)CategoricalCategoricalDtype	DataFrameDatetimeIndexIndexPeriodIndex
RangeIndexSeries	Timestamp
date_rangeisnanotnato_datetimeto_timedelta)
algorithmsnanopsc                    s$   r
fdd}|S  fdd}|S )a`  
    Create a function for calling on an array.

    Parameters
    ----------
    alternative : function
        The function to be called on the array with no NaNs.
        Only used when 'skipna_alternative' is None.
    skipna_alternative : function
        The function to be called on the original array

    Returns
    -------
    function
    c                    
    | j S Nvaluesxskipna_alternative Y/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/frame/test_reductions.pyskipna_wrapper?      
z+make_skipna_wrapper.<locals>.skipna_wrapperc                    s"   |   }t|dkrtjS  |S )Nr   )dropnalennpnanr   Znonaalternativer!   r"   r#   D   s   r!   )r+   r    r#   r!   )r+   r    r"   make_skipna_wrapper-   s
   r,   TFh㈵>:0yE>c	                    s  t || }	|rctdtdddi}
td t |
|  }W d   n1 s'w   Y  t|ts3J tt|
|
d< td t |
|  }W d   n1 sQw   Y  t|ts]J t|scJ |r fdd}t	 |}|	d	d
d}|	dd
d}tj
||||||d tj
||j|dd||d n }|	d	d}|	dd}tj
||||||d | dv r|j|dd}tj
||d
||d |r|jj}||jksJ ||jksJ tjtdd |	dd W d   n1 sw   Y  |r<|tj }t || d	d}t || dd}| dv r>| dkrdnd	}t||j|jd}t
|| t||j|jd}t
|| dS dS dS )a  
    Check that operator opname works as advertised on frame

    Parameters
    ----------
    opname : str
        Name of the operator to test on frame
    alternative : function
        Function that opname is tested against; i.e. "frame.opname()" should
        equal "alternative(frame)".
    frame : DataFrame
        The object that the tests are executed on
    has_skipna : bool, default True
        Whether the method "opname" has the kwarg "skip_na"
    check_dtype : bool, default True
        Whether the dtypes of the result of "frame.opname()" and
        "alternative(frame)" should be checked.
    check_dates : bool, default false
        Whether opname should be tested on a Datetime Series
    rtol : float, default 1e-5
        Relative tolerance.
    atol : float, default 1e-8
        Absolute tolerance.
    skipna_alternative : function, default None
        NaN-safe version of alternative
    bz1/1/2001   periodsNac                    r   r   r   r   r*   r!   r"   wrapper   r$   z$assert_stat_op_calc.<locals>.wrapperr   Faxisskipna   )check_dtypertolatolr6   )r:   r;   )sumprodNo axis named 2matchr>   indexdtype)getattrr   r   tmassert_produces_warning
isinstancer   ranger&   r,   assert_series_equalapplyr   rD   pytestraises
ValueErrorr'   r(   rC   )opnamer+   frame
has_skipnar9   check_datesr:   r;   r    fdfresultr4   r#   result0result1expectedZ	lcd_dtypeall_nar0r1unitr!   r*   r"   assert_stat_op_calcM   sz   
%





r]   c                  C   s   t tjtjdtdtjdtdgddtdd tdD tdtt	dtdtd	} tj
| jd
d< tj
| jddddf< | S )z
    Fixture for DataFrame of booleans with index of unique strings

    Columns are ['A', 'B', 'C', 'D']; some entries are missing
    )      rD   r   r<   c                 S      g | ]}d | qS Zfoo_r!   .0ir!   r!   r"   
<listcomp>       z&bool_frame_with_na.<locals>.<listcomp>   ABCD)rC   columnsrD      
   r^      N)r   r'   ZconcatenateZonesboolZzerosr   rI   objectlistr(   ilocrT   r!   r!   r"   bool_frame_with_na   s   	rt   c                  C   sj   t tjddtdd tdD tdttdtdd} tj	| j
d	d
< tj	| j
ddddf< | S )z
    Fixture for DataFrame of floats with index of unique strings

    Columns are ['A', 'B', 'C', 'D']; some entries are missing
    r0   )rh   r_   c                 S   ra   rb   r!   rc   r!   r!   r"   rf      rg   z'float_frame_with_na.<locals>.<listcomp>rh   r`   ri   rC   rj   rk   rl   r^   rm   rn   N)r   r'   randomdefault_rngstandard_normalr   rI   rp   rq   r(   rr   rs   r!   r!   r"   float_frame_with_na   s   ry   c                   @   sX  e Zd Zejdddgejdddddd	d
dddddejdeddejdeddgdd Z	ejdddgejdddddd	d
ddddejdeddejdeddgdd Z
dd Zdd Zdd Zejdg dejd eg d!g d"g d#d$g d%d&d'eejd(gejd)gejd*gd+ed,gejd-d.d/ Zejd0g d1d2d3 Zejje d4d5d6d7 Zd8d9 Zejd:d;d<gd=d> Zejd:d;d<gd?d@ ZdAdB ZdCdD ZejdEg dFdGdH ZdIdJ ZejdKdLdMgdNgdOgdPgedPgdPgdQe dRgdSd,e!dTgdUfdVdMgdNgejgej"ejged,eejgdPgdQe e#j$gdSd,e!e#j$gdUfdLdWdXejejgdWdXejejgdejejejgedPejejejgdPgdQe g dYdSd,e!g dZg d[d\fdVdWdXejejgdWdXejejgdejejejgeejdPejejgdPgdQe g d]dSd,e!g d^g d[d\fgd_d` Z%dadb Z&dcdd Z'dedf Z(dgdh Z)ejdidjdke#j$dlgd*e#j$g gdmdn Z*dodp Z+ejdqe,de g e-g ej.d,e-g ej/d,e g drdse0g dtdsgdudv Z1ejdwdxdygejdzg d{d|d} Z2d~d Z3dd Z4ejdg dejddd(dddejgfdd)dejejejgfddVdddejgfgdd Z5ejdg dejddd(dddejgfdd)dejejejgfddVdddejgfgdd Z6dd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?ejddLdVgejdddgdd Z@ejdddgejddd ZAejdzdLdVgdd ZBdd ZCejddLdVgejdddgdd ZDejdddgejddd ZEejdzdLdVgdd ZFdd ZGdd ZHdd ZIejdddd*gfdddgfgdd ZJdd ZKejdddgejdddgejddVdLgddÄ ZLejdddgejdddgddń ZMejdơejdddgddȄ ZNddʄ ZOejdddgejdddgejddLdVgdd̈́ ZPejdΡddЄ ZQdd҄ ZRejdg ejSi dVfejTi dLfejSdg idVfejTdg idLfejSddVdVgidVfejTddVdVgidVfejSddLdVgidLfejTddLdVgidVfejSddLdLgidLfejTddLdLgidLfejSdVgdVgd՜dVfejTdVgdVgd՜dVfejSdVdVgdVdLgd՜dLfejTdVdVgdVdLgd՜dVfejTdeUddOgdd,idVfejSdeUddOgdd,idLfejTdeUddgeVd,idVfejSdeUddgeVd,idLfeejTdeUddgdSd,idVeejTdeUddgdd,idVeejSdeUddgdSd,idLeejSdeUddgdd,idLeejTdeUdd(gdSd,idLeejTdeUdd(gdd,idLeejSdeUdd(gdSd,idLeejSdeUdd(gdd,idLeejTdeUddgdd,idVeejSdeUddgdd,idLeejTdeUdd(gdd,idLeejSdeUdd(gdd,idLejTdeUddgdd,idLfejSdeUddgdd,idVfejTdeUdd(gdd,idLfejSdeUdd(gdd,idVfeejTeUddgdSd,eUddgdd,d՜dLddބ ZWdd ZXdd ZYdd ZZd;S )TestDataFrameAnalyticsr6   r   r8   rO   countr=   meanproductmedianminmaxnuniquevarstdsemskewZscipy)Zmarkskurtc                 C   s.  |dv r|dks|dv r|r|dkst |||d nk|dv r"d}n;|dkr0|d	kr-d
}n0d}n-|dkr7d}n&|dkrJ|dkrGdddg}nd}n|dv rQd}n|dkr]tjdtjd}t|tjsg|d }tjt	|d t |||d W d    n1 sw   Y  |dkrt |||dd d S d S )N)r=   r   r   r   r{   r   r=   r<   )r   r   r   r   r   z(could not convert string to float: 'bar'r}   r8   z2can't multiply sequence by non-int of type 'float'z0can't multiply sequence by non-int of type 'str'z7unsupported operand type\(s\) for \+: 'float' and 'str'r|   |z%Could not convert \['.*'\] to numericz/Could not convert string '(bar){30}' to numericr   r   z<'[><]=' not supported between instances of 'float' and 'str'r~   z1Cannot convert \[.*\] to numeric|does not support)flagsz|does not supportr@   r   Tr6   numeric_only)
rE   joinrecompileSrH   PatternrL   rM   	TypeError)selffloat_string_framer6   rO   using_infer_stringmsgr!   r!   r"   #test_stat_op_api_float_string_frame   sL   z:TestDataFrameAnalytics.test_stat_op_api_float_string_framec                 C   s   t |||dd d S )NFr   rE   )r   float_framer6   rO   r!   r!   r"   test_stat_op_api_float_frame&  s   z3TestDataFrameAnalytics.test_stat_op_api_float_framec                 C   s   dd }dd }dd }dd }d	d
 }t d||dddd t dtj|dddd t dtj|tjd t dtj|dd t dtj|tjd t d|| t d|| t d|| t d||dddd d S )Nc                 S   s   t |  S r   )r   r=   sr!   r!   r"   r{   <  s   z7TestDataFrameAnalytics.test_stat_op_calc.<locals>.countc                 S   s   t t|  S r   )r&   r   Zunique1dr%   r   r!   r!   r"   r   ?  s   z9TestDataFrameAnalytics.test_stat_op_calc.<locals>.nuniquec                 S      t j| ddS Nr8   Zddof)r'   r   r   r!   r!   r"   r   B     z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.varc                 S   r   r   )r'   r   r   r!   r!   r"   r   E  r   z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.stdc                 S   s   t j| ddt t|  S r   )r'   r   sqrtr&   r   r!   r!   r"   r   H  s   z5TestDataFrameAnalytics.test_stat_op_calc.<locals>.semr   FT)rQ   r9   rR   r=   float32gMbP?)r9   r:   r   r|   rR   r}   r   r   r   r{   )r]   r'   r=   astypeZnansumr|   r>   Znanprod)r   ry   Zmixed_float_framer{   r   r   r   r   r!   r!   r"   test_stat_op_calc;  sL   
z(TestDataFrameAnalytics.test_stat_op_calcc                    s>   t d  fdd} fdd}td|| td|| d S )Nscipy.statsc                        t | dk r	tjS  j| ddS )N   Fbias)r&   r'   r(   r   r   Zsp_statsr!   r"   skewnessv     zHTestDataFrameAnalytics.test_stat_op_calc_skew_kurtosis.<locals>.skewnessc                    r   )Nr_   Fr   )r&   r'   r(   kurtosisr   r   r!   r"   r   {  r   zDTestDataFrameAnalytics.test_stat_op_calc_skew_kurtosis.<locals>.kurtr   r   )rL   importorskipr]   )r   ry   r   r   r!   r   r"   test_stat_op_calc_skew_kurtosiss  s
   
z6TestDataFrameAnalytics.test_stat_op_calc_skew_kurtosisc                 C   s.   dd }t d||dd t d||ddd d S )Nc                 S   s   t |  r	tjS t| S r   )r   anyr'   r(   r~   r   r!   r!   r"   r4     s   
z3TestDataFrameAnalytics.test_median.<locals>.wrapperr~   Tr   F)r9   rR   )r]   )r   ry   	int_framer4   r!   r!   r"   test_median  s
   

z"TestDataFrameAnalytics.test_medianmethod)r=   r|   r>   r   r   r   r   r   rT   )gȃw@Ba@gCVZg
?Z.F?)r   r           )g94c4?g@}jX?gNr3   r/   cfoobarbazOrB   r0   r   r_   r   r8   r0   r`   z0ignore:Mismatched null-like values:FutureWarningc                 C   sj   |j jtjks	J t|||d}t|d||dt}|dv r-|dv r-d || < t	|| d S )Nr<   Zf8)r8   rj   r   )
r   rD   r'   Zobject_rE   r   rp   r   rF   rJ   )r   r   rT   r6   rU   rX   r!   r!   r"   %test_stat_operators_attempt_obj_array  s   z<TestDataFrameAnalytics.test_stat_operators_attempt_obj_arrayop)r|   r   r   r   r   r   c              	   C   s   t g dg dg dd}dg d}tjt|d t||  W d    n1 s-w   Y  tdd	5 dg d}tjt|d t||  W d    n1 sXw   Y  W d    d S W d    d S 1 spw   Y  d S )
Nr8   r0   r   r_   )      ?       @      @      @r3   r/   r   d)intfloatstrr   )zCould not convertcould not convertz"can't multiply sequence by non-intzdoes not supportr@   use_bottleneckF)r   r   rL   rM   r   rE   pdoption_context)r   r   rT   r   r!   r!   r"   test_mixed_ops  s,   	"z%TestDataFrameAnalytics.test_mixed_opsz"sum doesn't work for arrow stringsreasonc                 C   sr   t g dg dg dd}|jg dd |jdd}t|jtjg dtd	 |j	jd
d}t
|| d S )N)TTFFF)rl   rm   rh   (   2   )r3   r/   r   r   e)Z	bool_dataZint_dataZstring_datarj   r   r<   )r0      Zabcder`   r8   )r   reindexr=   rF   Zassert_numpy_array_equalr   r'   arrayrp   TrJ   )r   rT   testZaltr!   r!   r"   test_reduce_mixed_frame  s   z.TestDataFrameAnalytics.test_reduce_mixed_framec                 C   s   t g dg ddtjdgd}t| tdddd t|jddtdddd t|jdd	tdddd
 t|jdddtdddd
 d S )Nr8   r8   r8   r8   r0   r   r8   r   ABCr0   Fr%   r<   r   )r6   r%   )r   r'   r(   rF   rJ   r   r   r   rT   r!   r!   r"   test_nunique  s     z#TestDataFrameAnalytics.test_nuniquetzNUTCc                 C   sT   t ddgtd|dgd d}| }tdtd|dgddgd	}t|| d S )
Nr8   2000r   r0   r   r   r   r   r   rC   r   r   r|   r   rF   rJ   r   r   rT   rU   rX   r!   r!   r"    test_mean_mixed_datetime_numeric  s    z7TestDataFrameAnalytics.test_mean_mixed_datetime_numericc                 C   sJ   t dtd|dgd i}| }ttd|dgdgd}t|| d S )Nr   r   r   r0   r   r   r   r!   r!   r"   test_mean_includes_datetimes  s   z3TestDataFrameAnalytics.test_mean_includes_datetimesc                 C   s  dd t dddd t dddd t dddd t ddd	d t d
dddt dddd t ddd	d t dddd t dddd t ddg
}t|}tjtdd |  W d    n1 sbw   Y  |ddg  }tddgddgtd}t	|| d S )Nr0   z628.00r   r8   z383.00r   z651.00z575.00r_   z1114.00TESTz241.00z572.00z609.00z820.00rk   z1223.00z)unsupported operand type|does not supportr@   r   r   g@gL@rB   )
r   r   rL   rM   r   r|   r   rp   rF   rJ   )r   r   rT   rU   rX   r!   r!   r"   test_mean_mixed_string_decimal  s(   
z5TestDataFrameAnalytics.test_mean_mixed_string_decimalc                 C   s   |j dd}|dd }t|| |jdd}|dd }t|| ttjdddd	}t	j
|d	d
}|d	k  rCJ tdd t	j
|d	d
}|d	k  rYJ W d    d S 1 sdw   Y  d S )Nr_   r   c                 S      | j ddS Nr_   r   )r   r   r!   r!   r"   <lambda>"      z5TestDataFrameAnalytics.test_var_std.<locals>.<lambda>c                 S   r   r   )r   r   r!   r!   r"   r   &  r   r0   r8     r   r   r<   r   F)r   rK   rF   assert_almost_equalr   r'   repeatrv   rw   r   Znanvarr   r   r   r   Zdatetime_framerU   rX   arrr!   r!   r"   test_var_std   s   "z#TestDataFrameAnalytics.test_var_stdmeth)r   r   r   c                 C   sf  t tjddg dd}|dti}d|jd< t tjddg dd}|dti}d|jd< t||d	d
d}t|ddg |d	d}t	
|| t||d	d
d}t|ddg |d	d}t	
|| d}tjt|d t||d	dd W d    n1 sw   Y  d}tjt|d t||d	dd W d    d S 1 sw   Y  d S )Nr0   )rk   r   r   r   r   100)r   r   r3   r8   Tr   r   r   r<   z6unsupported operand type\(s\) for -: 'float' and 'str'r@   Fz&could not convert string to float: 'a')r   r'   rv   rw   rx   r   rp   locrE   rF   rJ   rL   rM   r   )r   r   Zdf1df2rU   rX   r   r!   r!   r"   test_numeric_only_flag1  s4   

"z-TestDataFrameAnalytics.test_numeric_only_flagc                 C   s   |j dd}|dd }t|| ttjdddd}tj	|dd	}|dk 
 r0J td
d tj	|dd	}|dk 
 rFJ W d    d S 1 sQw   Y  d S )Nr_   r   c                 S   s   | j ddtt|  S r   )r   r'   r   r&   r   r!   r!   r"   r   X  s    z1TestDataFrameAnalytics.test_sem.<locals>.<lambda>r0   r   r   r   r<   r   F)r   rK   rF   r   r'   r   rv   rw   r   Znansemr   r   r   r   r!   r!   r"   test_semV  s   "zTestDataFrameAnalytics.test_semzdropna, expectedT   g      $@r   r3   )
categories
2000-01-02M8[ns]1 days)r   r   r   DEFGF   	   )r  NaTr  r  r  r(   r(   r(   r   r8   r0   r   )HIJKLMNr  r  r  r  )r(   r  r(   r(   c                 C   s   t g dddtjdgdtjtjtjgttjtjdtjgtdttjtjdtjgtg dddtg d	g d
g dddtjtjgtdtjdtjgtg dddtg dtjdddd}|t	|
  j|d}t |}t|| d S )N)r  r        rl   r   r8   r3   r`   r  r  r  )r
  r
  r  r  )r  r  r
  r
  )r  r  r  r  )r  r(   r  r(   r_   int64)r   r   r   r  r  r  r	  r  r  r  r  r  r  r  r   )r   r'   r(   r   rp   r	   r   r   arangesortedkeysmoderF   assert_frame_equal)r   r%   rX   rT   rU   r!   r!   r"   test_mode_dropnac  s,   :

z'TestDataFrameAnalytics.test_mode_dropnac                 C   s   t dtjtjddgi}t ddtjgi}|rd nt}t| |jdd}|jddjdd}W d    n1 s;w   Y  t	|| d S )Nr   r3   Fr   )ZbyT)Zdrop)
r   r'   r(   UserWarningrF   rG   r  Zsort_valuesZreset_indexr  )r   r   rT   rX   warningrU   r!   r!   r"   test_mode_sortwarning  s   z,TestDataFrameAnalytics.test_mode_sortwarningc                 C   sD   t g ddgd}| }t g ddgtg tjdd}t|| d S )Nr3   r/   r   r`   rj   rC   )r   r  r   r'   r  rF   r  r   rT   rU   rX   r!   r!   r"   test_mode_empty_df  s   z)TestDataFrameAnalytics.test_mode_empty_dfc                 C   s  t tddddtddddtdtddd d	}t |d
 |d  |d
 |d  d}| }|jd |jd ks=J |jd |jd ksIJ |jdd}||jd k sZJ | }|jd |jd ksjJ |jd |jd ksvJ |jdd}||d
 k sJ |	 }t	|}t |d
 |d  |d |d
  d}t
|| t
|| | }d|d< d|d< d|d< td|d< | }tttddttdddddtdg|jd}t
|| |jddd }tg d!g d"d}t
|| |d
dg d}ttddgd }t
|| |d
dg  }ttddtddgd
dgd}t
|| t td#dd$td%dd$d&}|d' |d(  |d)< |d) jd*ksYJ |d( |d'  |d+< |  |d) jd*ksqJ |d+ jd*ks{J d S ),Nz2012-1-1r   r  r2   freqz2012-1-2Z20120101rk   )minutessecondsr   r   r   r   r   r   )r   r   r8   )r   r   r<   )r0   r   )r0   r   r   r   r  Z20130101r  i1  r)  )daysr   Tr   )r8   r8   r   r   Z20130102r1   Z20130105)timetime2r.  r-  Zoff1timedelta64[ns]Zoff2)r   r   r   r   r   rr   r   allr   absrF   r  copyr   r   	Timedeltarj   rJ   rD   _consolidate_inplace)r   rT   ZdiffsrU   Zresult2rX   mixedr!   r!   r"   test_operators_timedelta64  sz   &&

z1TestDataFrameAnalytics.test_operators_timedelta64c                 C   s   t jddd}t||ddd}t j|jd< |jdd	}t|d
  t jgd
dgdd}t|| |jddd}tt 	dgd t jt 	dg }t|| d S )Nz1 Dayrl   r1   r   Tr2  )rn   r+  Fr7   r   r   r/  rB   r8   r5   r   r
  )
r   timedelta_ranger   r  rr   r   r   rF   rJ   r3  )r   ZtdirT   rU   rX   r!   r!   r"   !test_std_timedelta64_skipna_false!  s   $z8TestDataFrameAnalytics.test_std_timedelta64_skipna_falser   z
2022-01-01z
2022-01-02z
2022-01-03c                 C   s   |r|rt dd |D rtjjdd}|| t||}td|i}|j|d}	|r7t dd |D rEt	dt
jid| d	d
}
nt	ddid| d	d
}
t|	|
 d S )Nc                 s       | ]}|t ju V  qd S r   r   r  rd   valuer!   r!   r"   	<genexpr>9      zFTestDataFrameAnalytics.test_std_datetime64_with_nat.<locals>.<genexpr>z=GH#51446: Incorrect type inference on NaT in reduction resultr   r3   r8  c                 s   r;  r   r<  r=  r!   r!   r"   r?  B  r@  ztimedelta64[]r`   l     "R: )r0  rL   markxfailapplymarkerr   Zas_unitr   r   r   r   r  rF   rJ   )r   r   r7   using_array_managerrequestr\   rB  dtirT   rU   rX   r!   r!   r"   test_std_datetime64_with_nat1  s    
z3TestDataFrameAnalytics.test_std_datetime64_with_natc                 C   sZ   t  }|d}|d}t|tsJ t|tsJ t|dks#J t|dks+J d S )Nr   r8   )r   r=   rH   r   r&   )r   Zempty_frameZaxis0Zaxis1r!   r!   r"   test_sum_cornerI  s   

z&TestDataFrameAnalytics.test_sum_cornerrC   ZME)r'  r  c                 C   s\   t dg|d}t||dd}|dv rd}n	|dkrd}nd	}tg ||d
}t|| d S )Nr3   r#  r8   r<   )r   r0  ro   r{   r  rp   rB   r   rE   r   rF   rJ   )r   all_reductionsrC   rT   rU   expected_dtyperX   r!   r!   r"   test_axis_1_emptyS  s   z(TestDataFrameAnalytics.test_axis_1_emptyzmethod, unit)r=   r   )r>   r8   r   )NTFc                 C   s  g d}t ||g|tjgtjtjgd}t|||d}t|||g|dd}t|| t|||dd}t||tjg|d}t|| t|||dd}t|||g|dd}t|| t|jdd  ||dd}t|tjtjg|d}t|| t |gd	 |gd
 tjgd
  d}t|||d
d}t|ddgd}t|| t|||dd}t|ddgd}t|| d S )Nr   r   float64rB   r8   )r   	min_countr   r   rl   rk   r   r   r      )r   r'   r(   rE   r   rF   rJ   rr   )r   r   r\   r   idxrT   rU   rX   r!   r!   r"   test_sum_prod_nanopsj  s*   "&z+TestDataFrameAnalytics.test_sum_prod_nanopsc                 C   s   g d}t ddgdtjgtjtjgd}|t}| }tg dd|d}t|| |jdd}t|| |jdd}tddtjgd|d}t|| d S )Nr   r   )r   r   r   m8[ns]rD   rC   rP  r8   )	r   r'   r(   rK   r   r=   r   rF   rJ   )r   rR  rT   r   rU   rX   r!   r!   r"   test_sum_nanops_timedelta  s   "
z0TestDataFrameAnalytics.test_sum_nanops_timedeltac                 C   sJ   t g dg dd}|jdd}ttjtjgddgd}t|| d S )	Nr   r_   rk   rQ  )r   yrl   rV  r   rY  r   )r   r=   r   r'   r(   rF   rJ   r$  r!   r!   r"   test_sum_nanops_min_count  s   z0TestDataFrameAnalytics.test_sum_nanops_min_count
float_type)Zfloat16r   rO  zkwargs, expected_result)r6   rP  g	@g333333@r5   c                 C   sL   t g dddtjgd|d}|jdi |}t||}t|| d S )N)r   gffffff@皙@g@r   r3   r/   r`   r!   )r   r'   r(   r=   r   r   rF   rJ   r   r[  kwargsZexpected_resultrT   rU   rX   r!   r!   r"   test_sum_nanops_dtype_min_count  s   z6TestDataFrameAnalytics.test_sum_nanops_dtype_min_countr   r   c                 C   sL   t g dddtjgd|d}|jdi |}t||}t|| d S )N)r   r   r\  r   r]  r`   r!   )r   r'   r(   r>   r   r   rF   rJ   r^  r!   r!   r"    test_prod_nanops_dtype_min_count  s   z7TestDataFrameAnalytics.test_prod_nanops_dtype_min_countc                 C   s6   |j t}t||j|jd}|td }|  d S )Nru   r8   )r   r   r   r   rC   rj   r   r=   )r   r   r   rP   Zdeltasr!   r!   r"   test_sum_object  s   z&TestDataFrameAnalytics.test_sum_objectc                 C   s"   t |}|d |d d S )Nr8   r   )r'   isnanr=   )r   r   boolsr!   r!   r"   test_sum_bool  s   

z$TestDataFrameAnalytics.test_sum_boolc                 C   s`   t tdddg ddg d}tjtdd |  W d    d S 1 s)w   Y  d S )	Nr   r_   r1   r   r   )r0   r   r_   z does not support reduction 'sum'r@   )r   r   r   rL   rM   r   r=   r   r!   r!   r"   test_sum_mixed_datetime  s   
"z.TestDataFrameAnalytics.test_sum_mixed_datetimec                 C   s   d}t jt|d |jdd W d    n1 sw   Y  t jtdd |jdd W d    n1 s7w   Y  |d dk|d< |d}|d |d j ksVJ d S )	Nz"Could not convert|does not supportr@   r   r<   unsupported operand typer8   r   ro   )rL   rM   r   r|   r   )r   r   r   r   Zmeansr!   r!   r"   test_mean_corner  s   
z'TestDataFrameAnalytics.test_mean_cornerc              	   C   s   t tdtdddtjdddtjddddd}|jd	d
}tddi}t	
|| tjtdd |  W d    d S 1 sDw   Y  d S )Nr   
2016-01-01r1   1D2016Yr&  )r   r   r   r  TrN  r   r   z'mean is not implemented for PeriodArrayr@   )r   r'   r  r   r   r9  period_ranger|   r   rF   rJ   rL   rM   r   r$  r!   r!   r"   test_mean_datetimelike  s   

"z-TestDataFrameAnalytics.test_mean_datetimelikec                 C   s   t tdtdddtjdddd}|jdd}td|jd	 |jd
 d}t	
|| tjdddd|d< tjtdd |jdd W d    d S 1 sQw   Y  d S )Nr   ri  r1   rj  r   FrN  r8   )r8   r   )r8   r   rk  rl  r&  r  z"mean is not implemented for Periodr@   )r   r'   r  r   r   r9  r|   r   r   rF   rJ   rm  rL   rM   r   r$  r!   r!   r"   )test_mean_datetimelike_numeric_only_false  s   
	"z@TestDataFrameAnalytics.test_mean_datetimelike_numeric_only_falsec                 C   sP   t jdjddd}t|dd}|jdd}t| d	}t|| d S )
Nr0   r   )rl   rk   )sizeInt64r`   TrN  Float64)	r'   rv   rw   Zintegersr   r|   r   rF   rJ   )r   r   rT   rU   rX   r!   r!   r"   *test_mean_extensionarray_numeric_only_true  s
   zATestDataFrameAnalytics.test_mean_extensionarray_numeric_only_truec                 C   s   t jtdd |d W d    n1 sw   Y  t jtdd |d W d    n1 s3w   Y  t jtdd |d W d    n1 sOw   Y  t jtdd |d W d    d S 1 slw   Y  d S )Nr   r@   r8   rg  )rL   rM   r   r   r   r|   r   )r   r   r!   r!   r"   test_stats_mixed_type  s   "z,TestDataFrameAnalytics.test_stats_mixed_typec                 C   s8   t tdtdd}t|}|jddd dksJ d S )Nr8   rl   ru   r<   r   )r   rI   r   r=   )r   rT   rd  r!   r!   r"   test_sum_bools'  s   z%TestDataFrameAnalytics.test_sum_boolsr7   c              	   C      |}t j|jdd< t j|jdddd f< ||fD ]c}d }|du s&|dkr.||u r,d nt}d}tj||d	 |j||d
}	W d    n1 sIw   Y  d}
tj||
d	 |jtj||d
}W d    n1 skw   Y  |	|j
j}t|	| qd S )Nrk   rl   r^   rm   rn   Fr8   z3The behavior of DataFrame.idxmin with all-NA valuesr@   r5   zThe behavior of Series.idxmin)r'   r(   rr   FutureWarningrF   rG   idxminrK   r   r   rC   rD   rJ   r   r   r   r7   r6   rP   rT   warnr   rU   msg2rX   r!   r!   r"   test_idxmin/  $   z"TestDataFrameAnalytics.test_idxminz3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 C   H   |dkr
t |d}nt |d}|j||d}t|jd}t|| d S Nr   r   r   r5   r`   )r   rx  r   rD   rF   rJ   r   rC   r7   r6   rP   rU   rX   r!   r!   r"   test_idxmin_emptyC     
z(TestDataFrameAnalytics.test_idxmin_emptyc                 C   f   t g dg dtdd}|j|d}|r!tddgdd	gd
}n
tg dg dd
}t|| d S )Nr0   r   r8   r0   r8   r8   xyxr   rN  r0   r8   r3   r/   r   )r0   r8   r   )r   rq   rx  r   rF   rJ   r   r   rT   rU   rX   r!   r!   r"   test_idxmin_numeric_onlyP     z/TestDataFrameAnalytics.test_idxmin_numeric_onlyc                 C   H   |}d}t jt|d |jdd W d    d S 1 sw   Y  d S Nz)No axis named 2 for object type DataFramer@   r0   r<   )rL   rM   rN   rx  r   r   rP   r   r!   r!   r"   test_idxmin_axis_2Z  
   "z)TestDataFrameAnalytics.test_idxmin_axis_2c              	   C   rv  )Nrk   rl   r^   rm   rn   Fr8   z3The behavior of DataFrame.idxmax with all-NA valuesr@   r5   zThe behavior of Series.idxmax)r'   r(   rr   rw  rF   rG   idxmaxrK   r   r   rC   rD   rJ   ry  r!   r!   r"   test_idxmax`  r}  z"TestDataFrameAnalytics.test_idxmaxc                 C   r~  r  )r   r  r   rD   rF   rJ   r  r!   r!   r"   test_idxmax_emptyt  r  z(TestDataFrameAnalytics.test_idxmax_emptyc                 C   r  )Nr  r  r  r   rN  r8   r   r3   r/   r   )r8   r   r8   )r   rq   r  r   rF   rJ   r  r!   r!   r"   test_idxmax_numeric_only  r  z/TestDataFrameAnalytics.test_idxmax_numeric_onlyc                 C   s   t d tg dg dddd}| }tddgd	d
gd}t|| | }tddgd	d
gd}t|| td	g didd}|jdd}tdgd	gd}t|| |jdd}tdgd	gd}t|| d S )NZpyarrowr  r  r]  zint64[pyarrow]r`   r8   r   r3   r/   r   r0   )r/   r   r3   zstring[pyarrow]FrN  )rL   r   r   r  r   rF   rJ   rx  r$  r!   r!   r"   test_idxmax_arrow_types  s   
z.TestDataFrameAnalytics.test_idxmax_arrow_typesc                 C   r  r  )rL   rM   rN   r  r  r!   r!   r"   test_idxmax_axis_2  r  z)TestDataFrameAnalytics.test_idxmax_axis_2c                 C   sP  t ddd}tg dtdd d d |jddd}| }tg d	g dd
}t|| | }tg dg dd
}t|| t	j
|jd< | }tg d	g dd
}t|| | }tg dg dd
}t|| |d d d |d< |  | }tg dg dd
}t|| | }tg dg dd
}t|| d S )Nri  r   r1   )r   r0   r8   r+  T)deepr   )r8   r   r0   r   )r   r0   r   )r   r   r_   )r8   r   r0   r   r   )r   r0   r8   r0   )r   r   rI   r2  r  r   rF   rJ   rx  r   r  r   r4  r   rG  rT   rU   rX   r!   r!   r"   test_idxmax_mixed_dtype  s.   *z.TestDataFrameAnalytics.test_idxmax_mixed_dtypezop, expected_valuer  rx  rk   c                 C   s^   t g dg dddd}|d}t|| }t d|itdd	gddd
d}t|| d S )N)d   r  r     r  r  )r   r   r   r8   r0   r   )IDr>  rq  r`   r  r>  r  r  )namerD   r   )r   groupbyrE   r   rF   r  )r   r   Zexpected_valuerT   rU   rX   r!   r!   r"   !test_idxmax_idxmin_convert_dtypes  s   
z8TestDataFrameAnalytics.test_idxmax_idxmin_convert_dtypesc                 C   s   t ddd}t||d d d ddd}tj|jd< |  |jd	d
}tg d}t	|| |j
d	d
}tg d}t	|| d S )Nri  r   r1   r+  )r   r_   Tr7  )r   r   r8   r<   )r_   r   r   )r_   r   r_   )r   r   r   r  rr   r4  r  r   rF   rJ   rx  r  r!   r!   r"   "test_idxmax_dt64_multicolumn_axis1  s   z9TestDataFrameAnalytics.test_idxmax_dt64_multicolumn_axis1r   r0  	bool_onlyc                 C   s8   |}t jdt|dk|d< t||||d d S )Nr0   g      ?Z_bool_r6   r  )r'   rv   rw   rx   r&   rE   )r   rO   r6   r  r   r5  r!   r!   r"   test_any_all_mixed_float  s   z/TestDataFrameAnalytics.test_any_all_mixed_floatc                 C   s   t |||dd d S )NFr  r   )r   rO   r6   rt   r!   r!   r"   test_any_all_bool_with_na  s   z0TestDataFrameAnalytics.test_any_all_bool_with_naz4ignore:Downcasting object dtype arrays:FutureWarningc                    sX  | d}tt| t||} fdd} fdd}|ddd}|d	dd}t||| t||j|d	d
 |dd
}|d	d
}t||| tj||j|d	d
dd tjtdd |dd
 W d    n1 srw   Y  |tj	 }	t|	|dd
}
t|	|d	d
}|dkr|

 rJ |
 rJ d S |
 sJ | sJ d S )NTc                    s   |   j} |S r   )r%   r   r)   r*   r!   r"   r#     s   
zFTestDataFrameAnalytics.test_any_all_bool_frame.<locals>.skipna_wrapperc                    r   r   r   r   r*   r!   r"   r4     r$   z?TestDataFrameAnalytics.test_any_all_bool_frame.<locals>.wrapperr   Fr5   r8   r<   )r9   r?   r@   r0   r   )ZfillnarE   r'   rF   rJ   rK   rL   rM   rN   r(   r   r0  )r   rO   rt   rP   rS   r#   r4   rV   rW   rY   rZ   r[   r!   r*   r"   test_any_all_bool_frame  s4   





z.TestDataFrameAnalytics.test_any_all_bool_framec                 C   s  t g dg dg ddg dd}|ddg jd	d
}tg dg dd}t|| |ddg jd	dd}t|| |d	}tg dg dd}t|| |jd	dd}t|| |jd d
 }|du smJ |jd d
 }|du s{J |dg jd d
 }|du sJ d S )N)TFF)TTF)TTTr   r   r   r   r   r8   r<   Tr  r  Fr   )r   r   r   rF   rJ   r0  itemr$  r!   r!   r"   test_any_all_extra1  s.   
z)TestDataFrameAnalytics.test_any_all_extrabool_agg_funcc           	      C   s   t dtjtjdgtjdtjdgtjtjtjdgtjtjdtjggd}|r2|dk o0| o0|dk}nd}t||||d}tdd|dg}t|| d S )	Nr8   Tr0   5datar   r0  r5   )r   r'   r(   rE   r   rF   rJ   )	r   r6   r  r7   r   rT   valrU   rX   r!   r!   r"   test_any_all_object_dtypeR  s   z0TestDataFrameAnalytics.test_any_all_object_dtypezAignore:'any' with datetime64 dtypes is deprecated.*:FutureWarningc                 C   s^   dt jdt jg}tdtdtjtjg}t||d}|jdd}tg d}t	|| d S )Nr8   r   z
1960-02-15z
1960-02-16r   r<   )TTTF)
r'   r(   r   r   r  r   r   r   rF   rJ   )r   Z
float_dataZdatetime_datarT   rU   rX   r!   r!   r"   test_any_datetimek  s   z(TestDataFrameAnalytics.test_any_datetimec                 C   s   t g dg dg ddtg dtdd}|jdd}ttjg d	}t|| t g dg dg dg d
d}|jdd}tddi}t|| d S )Nr   rX  )NNN)col1col2col3r`   r   Tr  rU  )FFT)r  r  r  col4r  F)	r   r   rp   r0  r   r'   bool_rF   rJ   r$  r!   r!   r"   test_any_all_bool_only~  s"   	z-TestDataFrameAnalytics.test_any_all_bool_onlyzfunc, data, expectedr   r   r   r   zM8[ns, UTC]rT  categoryrl   rm   c                 C   s~  t |}tdd |jD rNtjtdd || W d    n1 s$w   Y  tjtdd tt ||jd d W d    d S 1 sGw   Y  d S d}|jdd  r]t	}nd }t
j||d	d
 ||}W d    n1 svw   Y  t|tjsJ | |u sJ t
j||d tt ||jd d}W d    n1 sw   Y  t|tjsJ | |u sJ d S )Nc                 s   s    | ]}t |tV  qd S r   )rH   r
   )rd   r   r!   r!   r"   r?    r@  z>TestDataFrameAnalytics.test_any_all_np_func.<locals>.<genexpr>z)dtype category does not support reductionr@   r<   z0'(any|all)' with datetime64 dtypes is deprecatedc                 S   s
   | j dkS )Nr  )kindr   r!   r!   r"   r     s   
 z=TestDataFrameAnalytics.test_any_all_np_func.<locals>.<lambda>F)rA   Zcheck_stacklevel)r   r   dtypesrL   rM   r   rE   __name__rK   rw  rF   rG   rH   r'   r  r  )r   funcr  rX   r   rz  rU   r!   r!   r"   test_any_all_np_func  s4   5
"
z+TestDataFrameAnalytics.test_any_all_np_funcc                 C   sL   t tddgd }|du sJ t tddgd }|du s$J d S )Nr3   r/   r   TF)r'   r0  r   r  r   )r   rU   r!   r!   r"   test_any_all_object  s   z*TestDataFrameAnalytics.test_any_all_objectc                 C   s"  t ddgddgdt}|  tddg|d< |d d|d< | }|dg }t|| |jdd	d
}tdgdgd}t	|| |ddg jdd	d
}t	|| |jdd d
saJ |j
dd	d
}tdgdgd}t	|| |dg j
dd	d
}t	|| |j
dd d
sJ d S )Nr   r0   TFr   r   r  r  r   )r  r6   r   r   )r   r   rp   r4  r   Z_get_bool_datarF   r  r0  rJ   r   )r   rT   resrX   r!   r!   r"   test_any_all_object_bool_only  s&   
z4TestDataFrameAnalytics.test_any_all_object_bool_onlyc                 C   s   t g d}t dtjdtjgi}tg d}ttjtjdg}td  |j|dd dD ]}t|||dd	 q/W d    d S 1 sFw   Y  d S )
N)r   r   r   r   r   r   r8   r   )lowerr6   )ltlegtgeeqner<   )r   r'   r(   r   rF   rG   ZcliprE   )r   rT   Zdf_nanr   Zs_nanr   r!   r!   r"   test_series_broadcasting  s   "z/TestDataFrameAnalytics.test_series_broadcasting)[r  
__module____qualname__rL   rB  parametrizeparamtdZ
skip_if_nor   r   r   r   r   r   r'   r(   rp   filterwarningsr   r   rC  r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r  r  r"  r%  r6  r:  rH  rI  r   r   r  rO  r   rM  rS  rW  rZ  r`  ra  rb  re  rf  rh  rn  ro  rs  rt  ru  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r0  r   r   r  r  r  r  r!   r!   r!   r"   rz      sd   .8$
	
 




$



9W




 	


	

	&

+!


	
"#$%'
3#%rz   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zej	d	d
dgej	dddgd	e
fddZej	dddgdd Zdd Zdd Zejdd Zejdd ZdS )TestDataFrameReductionsc                 C   s   t dtjtjtdgi}| }ttdgdgd}t|| | }ttdgdgd}t|| t dtjtjgi}| }ttjgdgd}t|| | }ttjgdgd}t|| d S )Nr   z
2012-05-01r   )	r   r   r  r   r   r   rF   rJ   r   )r   rT   r  expr!   r!   r"   test_min_max_dt64_with_NaT(  s   z2TestDataFrameReductions.test_min_max_dt64_with_NaTc                 C   s   |}t |trt rtd ttd|dtd|dgtd|dtjgd}|j	ddd	}t
|jd
 tjg}|j|d jksBJ t|| |jddd	}t
|jd tjg}|j|d jkscJ t|| d S )NzSGH#37659 OSError raised within tzlocal bc Windows chokes in times before 1970-01-01z2020-01-01 08:00:00r   z1920-02-01 09:00:00z2020-02-01 08:00:00r]  r8   Fr5   )r   r3   r3   )r   r/   )rH   r   r   rL   skipr   r   r   r  r   r   r   rD   rF   rJ   r   )r   rF  Ztz_naive_fixturer   rT   r  rX   r!   r!   r"   'test_min_max_dt64_with_NaT_skipna_false?  s(   

	z?TestDataFrameReductions.test_min_max_dt64_with_NaT_skipna_falsec                 C   s   t dtg i}ttg }|jddjtju | tju ks!J |jddjtju | tju ks4J t	|jdd| t	|jdd| d S )Nr   r   r<   r8   )
r   r   r   r   r   r   r  r   rF   rJ   )r   rT   Zexpected_dt_seriesr!   r!   r"   *test_min_max_dt64_api_consistency_with_NaT]  s   &&zBTestDataFrameReductions.test_min_max_dt64_api_consistency_with_NaTc                 C   s   t dg i}tg td}t|jddjt| ksJ t|jddjt| ks2J t	|jdd| t	|jdd| d S )Nr   r`   r   r<   r8   )
r   r   r   r'   rc  r   r   r   rF   rJ   )r   rT   Zexpected_float_seriesr!   r!   r"   *test_min_max_dt64_api_consistency_empty_dfl  s   &&zBTestDataFrameReductions.test_min_max_dt64_api_consistency_empty_dfinitialz2018-10-08 13:36:45+00:00z2018-10-08 13:36:45+03:00r   r   r   c                 C   s<   t |}t|g}t|g}t||dd}t|| d S )Nr8   r<   )r   r   r   rE   rF   rJ   )r   r  r   Z
initial_dtrX   rT   rU   r!   r!   r"   test_preserve_timezonex  s
   

z.TestDataFrameReductions.test_preserve_timezonec                 C   s   t ddd}tttjtj|gttj||gd}t||}|d|d}|r0ttj||g}n	ttjtj|g}t|| d S )Nz
1900-01-01T)utcr]  r8   r5   )r   r   r   r   r  rE   rF   rJ   )r   r   r7   r  rT   r   rU   rX   r!   r!   r"   !test_minmax_tzaware_skipna_axis_1  s   "
z9TestDataFrameReductions.test_minmax_tzaware_skipna_axis_1c                 C   s   t tddgttddtddgd}|jdd}tddgd	d
gd}t|| |jdd}tddgd}t|| d S )Nr   r   r8   ms)r3   tr<   FTr3   r  )r  rC   r  )r   r   r   r   rF   rJ   r$  r!   r!   r"   test_frame_any_with_timedelta  s   
z5TestDataFrameReductions.test_frame_any_with_timedeltac                 C   sp   |dkr| tjjdd |g d}d}tjt|d t||d d W d    d S 1 s1w   Y  d S )Nr{   zCount does not accept skipnar   r   zAFor argument "skipna" expected type bool, received type NoneType.r@   r8  )rD  rL   rB  rC  rM   rN   rE   )r   rF  Zframe_or_seriesrK  objr   r!   r!   r"   "test_reductions_skipna_none_raises  s   "z:TestDataFrameReductions.test_reductions_skipna_none_raisesc                 C   s`   t ttdgddttdgddd}| }ttdtdgdddgd	}t|| d S )
Nz
2019-12-31zdatetime64[s]r`   z2019-12-31 00:00:00.123zdatetime64[ms]r]  r3   r/   rU  )r   r   r   r   rF   rJ   r$  r!   r!   r"   &test_reduction_timestamp_smallest_unit  s   
z>TestDataFrameReductions.test_reduction_timestamp_smallest_unitc                 C   sh   t ttdgddttdgddd}| }ttdtdgdddgd}t|| d S )	Nr  ztimedelta64[s]r`   ztimedelta64[ms]r]  r3   r/   rU  )r   r   r   r3  r   rF   rJ   r$  r!   r!   r"   &test_reduction_timedelta_smallest_unit  s   z>TestDataFrameReductions.test_reduction_timedelta_smallest_unitN)r  r  r  r  r  r  r  rL   rB  r  r   r  r  r  r  r  Zskip_array_manager_invalid_testr  Z&skip_array_manager_not_yet_implementedr  r!   r!   r!   r"   r  '  s&    

r  c                   @   sH   e Zd Zejdddgdd Zdd Zejddd	gd
d ZdS )TestNuisanceColumnsr   r   r0  c                 C   sR  t ddgddd}| }tjtdd t||  W d    n1 s%w   Y  tjtdd tt|| W d    n1 sCw   Y  tjtdd t||dd	 W d    n1 sbw   Y  tjtdd t||d d	 W d    n1 sw   Y  tjtdd tt||dd
 W d    d S 1 sw   Y  d S )Nr   r8   r  r   )rD   r  does not support reductionr@   Fr  r<   )r   to_framerL   rM   r   rE   r'   )r   r   serrT   r!   r!   r"   .test_any_all_categorical_dtype_nuisance_column  s"   "zBTestNuisanceColumns.test_any_all_categorical_dtype_nuisance_columnc                 C   sJ  t dtg di}|d }tjtdd |  W d    n1 s$w   Y  tjtdd |jdd W d    n1 sAw   Y  tjtdd |  W d    n1 s\w   Y  |d t|d< tjtdd |jdd W d    n1 sw   Y  tjtdd |  W d    d S 1 sw   Y  d S )Nr   )r8   r0   r0   r0   r   r  r@   FrN  r   )r   r	   rL   rM   r   r~   r   r   )r   rT   r  r!   r!   r"   -test_median_categorical_dtype_nuisance_column  s$   


"zATestNuisanceColumns.test_median_categorical_dtype_nuisance_columnr   r   c                 C   s  t g ddd}t|}|d}tjtdd t||  W d    n1 s)w   Y  tjtdd tt|| W d    n1 sGw   Y  tjtdd t||dd W d    n1 sfw   Y  tjtdd t||  W d    n1 sw   Y  tjtdd tt||dd	 W d    n1 sw   Y  |d t	|d
< tjtdd t||  W d    n1 sw   Y  tjtdd tt||dd	 W d    d S 1 sw   Y  d S )N)r3   r/   r   r/   F)Zorderedr   zis not ordered for operationr@   rN  r   r<   r   )
r	   r   r  rL   rM   r   rE   r'   r   rp   )r   r   catr  rT   r!   r!   r"   :test_min_max_categorical_dtype_non_ordered_nuisance_column  s2   
"zNTestNuisanceColumns.test_min_max_categorical_dtype_non_ordered_nuisance_columnN)	r  r  r  rL   rB  r  r  r  r  r!   r!   r!   r"   r    s    
r  c                   @   s<  e Zd Zejddejdejfdejdej	fdejdejfdejdejfdej
dejfdej
dejfdejdejfdejdejfdejdejfdejdejfdejdejfgdd Zejddejejfdejejfdejejfdejejfdej
ejfdej
ejfdejejfdejejfdejejfdejejfdejejfgd	d
 Zejdddderdndfddderdndfddderdndfddddderdndfddderdndfdddddgdd Zejddderdndfdderdndfdddderdndfdderdndfddddd gd!d" Zd#S )$TestEmptyDataFrameReductionsz#opname, dtype, exp_value, exp_dtyper=   r   r>   r8   c                 C   B   t g g d|d}t||dd}t||g|d}t|| d S Nr   r8   r`   r   rV  rJ  r   rO   rD   Z	exp_value	exp_dtyperT   rU   rX   r!   r!   r"   test_df_empty_min_count_0)  s   z6TestEmptyDataFrameReductions.test_df_empty_min_count_0zopname, dtype, exp_dtypec                 C   F   t g g d|d}t||dd}ttjtjg|d}t|| d S Nr  r`   r8   rV  )r   rE   r   r'   r(   rF   rJ   r   rO   rD   r  rT   rU   rX   r!   r!   r"   test_df_empty_min_count_1@     z6TestEmptyDataFrameReductions.test_df_empty_min_count_1ZInt8ZInt32rq  )r=   rq  r   rq  )r>   rq  r8   rq  ZUInt8ZUInt32UInt64)r=   r  r   r  )r>   r  r8   r  )r=   Float32r   r  )r>   r  r8   r  )r=   rr  r   rr  c                 C   r  r  rJ  r  r!   r!   r"   "test_df_empty_nullable_min_count_0W  s   z?TestEmptyDataFrameReductions.test_df_empty_nullable_min_count_0)r=   rq  rq  )r>   rq  rq  )r=   r  r  )r>   r  r  )r=   r  r  )r>   r  r  )r=   rr  rr  c                 C   r  r  )r   rE   r   r   NArF   rJ   r  r!   r!   r"   "test_df_empty_nullable_min_count_1q  r  z?TestEmptyDataFrameReductions.test_df_empty_nullable_min_count_1N)r  r  r  rL   rB  r  r'   Zint8r  int_Zuint8Zuint64Zuintr   rO  r  r  is_windows_np2_or_is32r  is_windows_or_is32r  r!   r!   r!   r"   r  (  s    


	r  c                 C   s   | rt jjdd}|| tdtjd	dd}d|d< t
|}|j|jk s0J |jd	d
}ttjddtjgdd}t|| |jdd	d}t|| |jdd	d}ttjddtjddtjddtjgdd}t|| d S )Nz3Incorrect type inference on NaT in reduction resultr   r
  zm8[s]r_   r0   ZNat)r+  r+  Fr8  r  r*  r`   r   r5   r8   rk   r  )rL   rB  rC  rD  r'   r  r   r  viewZreshaper   r  rD   r0  r=   r   r   r3  r  rF   rJ   )rE  rF  rB  r   rT   rU   rX   r!   r!   r"   !test_sum_timedelta64_skipna_false  s0   
 


	r  z#sum doesn't work with arrow stringsr   c                  C   sP   t ddggtdd} | ddi} |  }tddgddgd}t|| d S )Nr3   r8   abr   r/   rq  r   )r   rq   r   r=   r   rF   rJ   )rT   rU   rX   r!   r!   r"   !test_mixed_frame_with_integer_sum  s
   r  r   )TFNr   r   r   c                 C   sl   t d}t|jd |jgt d}td|i}t|| |d}tt|| gdt	dgd}t
|| d S )Nr  r`   rq  rN  rU  )r'   Ziinfor   r   r   r   Z
Int64Dtyper   rE   r   rF   rJ   )r   r   Z
int64_infor  rT   rU   rX   r!   r!   r"   test_minmax_extensionarray  s   

r  ts_valuez
2000-01-01c                 C   sV   t dgdgdg| gd}tjtdd |  W d    d S 1 s$w   Y  d S )Nr8   g?r   r   r  r@   )r   rL   rM   r   r=   )r  rT   r!   r!   r"   .test_frame_mixed_numeric_object_with_timestamp  s   
"r  c                  C   s   t g d} | jdddd}tdgtd}t|| td}tj	t
|d	 | jdddd W d    d S 1 s;w   Y  d S )
N)r8   r3   Tr   r8   F)r6   rP  r   r3   r`   z2unsupported operand type(s) for +: 'int' and 'str'r@   )r   r>   r   rp   rF   rJ   r   escaperL   rM   r   r=   )rT   rU   rX   r   r!   r!   r"   $test_prod_sum_min_count_mixed_object  s   
"r  )r   r   r|   r~   r   r   rD   rO  rr  c                 C   s   t tjdd|d}t|| d |d}|jtjd}| dv r>t	d}| dkr,d} t|| |d	d d
}t
|| d S tt| |d d}||ksMJ d S )Nr0   )r_   r_   r`   r   >   r   r   r   r   r   F)r   r6   r<   )r   r'   rv   rw   rx   rE   Zto_numpyrO  rL   r   rF   r   )r   r   rD   rT   rU   Znp_arrZcomp_modrX   r!   r!   r"   'test_reduction_axis_none_returns_scalar  s   
r  kernel)ZcorrcorrwithZcovr  rx  r   r   r|   r~   r   r>   quantiler   r   r   r=   r   c                 C   s   t g dtd}| dkr|fnd}dg d}| dkr(d}d	}d||g}tjt|d
 t|| |  W d    d S 1 sBw   Y  d S )Nr   r]  r  r!   r   )znot allowed for this dtypez%argument must be a string or a numberz"not supported between instances ofrg  z*argument must be a string or a real numberr~   zTCannot convert \[\[<class 'object'> <class 'object'> <class 'object'>\]\] to numericzPCannot convert \[<class 'object'> <class 'object'> <class 'object'>\] to numericr@   )r   rp   r   rL   rM   r   rE   )r  rT   argsr   Zmsg1r{  r!   r!   r"   test_fails_on_non_numeric  s   	"r  )r0  r   r{   r  rx  r   r   r   r|   r~   r   r   r>   r}   r   r   r   r=   r   rP  r0   c                 C   sv  t tg d|dtddtjdg|dd}t g ddd	tjd
gd}| dv r+d}n| dv r2d}n| dv r>|ds>d}n|}i }| dvrJ||d< | dv rR||d< d }d }	|sd| dv rdt}d|  d}	tj	||	d t
|| dddi|}
W d    n1 sw   Y  tj	||	d t
|| dddi|}W d    n1 sw   Y  | dvr||}t|
| d S )Nr  r`   r   r8   r   r]  )r   r   r   r   r   r   r   r   r  )r0  r   boolean)r   r   r|   r~   r   r   r   r   Floatrr  )r{   r   r  r7   )r>   r}   r=   rP  )r  rx  zThe behavior of DataFrame.z with all-NA valuesr@   r6   r!   )r   r   r   r  r'   r(   
startswithrw  rF   rG   rE   r   rJ   )r   r7   rP  Zany_numeric_ea_dtyperT   Zexpected_dfrL  r_  rz  r   rU   rX   r!   r!   r"   test_numeric_ea_axis_1#  sL   	

r  r   )TTFr-   r.   N)Bdatetimer   decimalr   r   Zdateutil.tzr   numpyr'   rL   Zpandas._configr   Zpandas.compatr   r   Zpandas.compat.numpyr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingrF   Zpandas.corer   r   r  r  r,   r]   Zfixturert   ry   rz   r  r  r  r  rB  rC  r  r  r  r  r  r  r  r  r  r!   r!   r!   r"   <module>   s    @
$
n

          O 0Ra"
	

