o
    թZhP                     @   sp  d 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
Zddl
mZmZmZmZmZmZmZ ddlmZ ddlmZ dd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z!dd Z"dd Z#dd  Z$d!d" Z%d#d$ Z&d%d& Z'ej()d'd(d)gd*d+ Z*d,d- Z+d.d/ Z,ej()d0e-ed1d2d3d4ife.ed1g d2g d3d4ifd5d6 ed1d2d3d4ifd7d6 ed1g d2g d3d4ifgd8d9 Z/ej()d0e-ed2d3gd:d;gd1d<fe.eg d2g d3gd:d;gd1d<fd=d6 ed2d3gd:d;gd1d<fd>d6 eg d2g d3gd:d;gd1d<fgd?d@ Z0dAdB Z1dCdD Z2dEdF Z3ej()dGe4e5e6e7e8e9e:e;gdHdI Z<dS )Jz
test all other .agg behavior
    N)partial)SpecificationError)	DataFrameIndex
MultiIndexPeriodIndexSeries
date_rangeperiod_range)pprint_thingc                  C   s   t tjddtjddg dg dd} | d}dd }tjtd	d
 |	|g W d    n1 s<w   Y  tjtd	d
 |	| W d    d S 1 sYw   Y  d S )N      )ar   br   r   )onetwor   r   r   )Zdata1Zdata2key1key2r   c                 S   s   |   |   S N)maxmin)Zarr r   `/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/groupby/aggregate/test_other.pypeak_to_peak)   s   z5test_agg_partial_failure_raises.<locals>.peak_to_peakzunsupported operand typematch)
r   nprandomdefault_rngstandard_normalgroupbypytestraises	TypeErroragg)dfgroupedr   r   r   r   test_agg_partial_failure_raises   s   
"r'   c                  C   s   g dg dg dg} t dd | D dd | D dd | D d}d	d | D } t d
d | D dd | D dd | D d}|d |d   |d< |dd}|d |d   |d< |dd}t|t|ksrJ d S )N)   
2012-01-01      ?)r   z
2012-01-02g       @)   Ng      @c                 S      g | ]}|d  qS r   r   .0xr   r   r   
<listcomp>8       z,test_agg_datetimes_mixed.<locals>.<listcomp>c                 S   r,   r(   r   r.   r   r   r   r1   9   r2   c                 S   r,   r   r   r.   r   r   r   r1   :   r2   )keydatevaluec                 S   s<   g | ]}|d  |d rt j|d d nd|d gqS )r   r(   z%Y-%m-%dNr   )dtdatetimestrptimer6   )r/   rowr   r   r   r1   >   s     c                 S   r,   r-   r   r.   r   r   r   r1   I   r2   c                 S   r,   r3   r   r.   r   r   r   r1   J   r2   c                 S   r,   r4   r   r.   r   r   r   r1   K   r2   r7   weightsr6   sum)r   r=   r    	aggregatelen)dataZdf1Zdf2Zgb1Zgb2r   r   r   test_agg_datetimes_mixed3   s*   	rA   c                  C   s   t dddd} ttjdd| d}|jdd	 }t|j	t
s$J t d
ddd}ttjdt||d}ttjdt||d}t||d}||j	j}t| d S )Nz2012-1-1Mr+   )freqperiodsr   )r+   r   indexr   )levelz1999-01r   )startrD   rC   )s1s2)r
   r   r   r   r   r   r    r=   
isinstancerF   r   r   r?   	from_dictmonthlist)Zprngr%   rsrF   rI   rJ   r&   r   r   r   test_agg_period_indexX   s   rP   c                  C   s  t g dtddddd} d | jg ddf< | jg d	 d
}| d
}t| | t|d| t|ddi| t	|j
 |d  t	|j
d|d  | jg d d
}| d
}t| | t|d| t|ddi| t	|j
 |d  t	|j
d|d  tg dttdd
ddd}t	|j
t| t	|j
 | tg dttdd
ddd}t	|j
 | d S )N)ArQ   BrR   CrS   DrT   z1/1/2011   h)rD   rC   )classtime)r   r(   r   r   rX   )r   r+         rW   first)r   r+   rY      last)r   r   r   r   ZABCDnamerF   r_   )r   r(   r(   r   )r   r	   locZ	set_indexr    tmassert_frame_equalr[   r$   assert_series_equalrX   r]   r   r   rN   r?   sizecount)r%   expr&   r   r   r   *test_agg_dict_parameter_cast_result_dtypesg   s2   

rh   c                  C   s^   dd t dD } td}t|| d}|dd t}|dd  }t|| d S )Nc                 S   s   g | ]}t d |d dqS )i  r(   )r8   r9   r.   r   r   r   r1      s    z0test_agg_cast_results_dtypes.<locals>.<listcomp>   Zaaabbbbbbccd)XYrj   rk   )	rangerN   r   r    r$   r?   rf   rb   rd   )uvr%   resultexpectedr   r   r   test_agg_cast_results_dtypes   s   rq   c                  C   s   t g dg dg dd} t dg dig dd}d|j_| ddg  }t|| t g dg dd	g dd}d|j_| ddd
g  }t|| d S )N)r(   r   r+   rY   r   )r(   r   r   rY   r   r   r   cr   )r(   g      @rY   r   )r(   r   rY   r   rE   r   )r   rs   rs   )r   rF   r_   r    meanrb   rc   )r%   rp   ro   r   r   r   test_aggregate_float64_no_int64   s   ru   c            	      C   s  t g dg dtjddd tdd} | ddg}|d	  }|d	  }|d
  }|d
  }|d
 	ddg}t
j||gdd}ddg|_tj||dd |	ddg}t
j||||gdd}td	d
gddgg|_tj||dd |d
d	g 	ddg}t
j||||gdd}td
d	gddgg|_tj||dd |	ddd}t
j||gdd}tj||dd |	ddgddgd}t
j||||gdd}td	d
gddgg|_d}tjt|d |d
d	g 	ddd W d    d S 1 sw   Y  d S )Nfoobarrw   rx   rw   rx   rw   rw   r   r   r   r   r   r   r   r   r   rU   r*   rQ   rR   rS   rT   rQ   rR   rS   rT   r=   rt   r(   )ZaxisT)Z
check_likerS   rT   z&Column\(s\) \['r', 'r2'\] do not existr   )rr2)r   r   r   r   r   aranger    rt   r=   r$   pdconcatcolumnsrb   rc   r   Zfrom_productr!   r"   KeyError)	r%   r&   Zc_meanZc_sumZd_meanZd_sumro   rp   msgr   r   r   test_aggregate_api_consistency   sD   	
$r   c                  C   s  t g dtdtdd} d}tjt|d | dddd	gid
ddgid W d    n1 s5w   Y  d}tjt|d | dddg dd	i W d    n1 s\w   Y  d}tjt|d | djddi W d    d S 1 sw   Y  d S )N)r(   r(   r(   r   r   r   rQ   rR   rS   nested renamer is not supportedr   rQ   rw   r=   r   rx   rf   r   )rR   rS   z!Column\(s\) \['ma'\] do not existrR   rS   ma)	r   rl   r!   r"   r   r    r$   r   rR   )r%   r   r   r   r   "test_agg_dict_renaming_deprecation   s   
"r   c                  C   s   t g dg dtjddd tdd} | ddg}d	}tjt	|d
 |d 
dddgi W d    n1 s?w   Y  tjt	|d
 |d 
ddd W d    d S 1 saw   Y  d S )Nrv   ry   r   rU   r*   rz   rQ   rR   r   r   rT   rS   r=   stdr{   )r   r   r   r   r   r~   r    r!   r"   r   r$   r%   gr   r   r   r   test_agg_compat   s   	"r   c                  C   sr  t g dg dtjddd tdd} | ddg}d	}tjt	|d
 |
dddgidddgid W d    n1 sDw   Y  tjt	|d
 |dddgidddgid W d    n1 skw   Y  tjt	|d
 |d tjtjd W d    n1 sw   Y  tjt	|d
 |d tjtjd W d    d S 1 sw   Y  d S )Nrv   ry   r   rU   r*   rz   rQ   rR   r   r   rS   rt   r=   rT   )r1r}   rar   rbr{   )result1result2)rT   r   )r   r   r   r   r   r~   r    r!   r"   r   r>   r$   r=   rt   r   r   r   r   test_agg_nested_dicts  s*   	"""r   c                  C   sf   t tjdjddd} dd }tjtdd | d		| W d    d S 1 s,w   Y  d S )
Nr   
   )   r   )re   c                 S   s   t d t |   td)Nz(----------------------------------------test)r   Z	to_stringr#   )r%   r   r   r   raiseException!  s   z=test_agg_item_by_item_raise_typeerror.<locals>.raiseExceptionr   r   r   )
r   r   r   r   Zintegersr!   r"   r#   r    r$   )r%   r   r   r   r   %test_agg_item_by_item_raise_typeerror  s
   "r   c                  C   sX   t tjdtjdtdddd} | dd dd g}|d	}| }t	|| d S )
Nr   dtypez
2020-01-01)rD   rE   c                 S      | j S r   )yearr0   r   r   r   <lambda>.      z*test_series_agg_multikey.<locals>.<lambda>c                 S   r   r   )rM   r   r   r   r   r   .  r   r=   )
r   r   r~   Zfloat64r	   r    r$   r=   rb   rd   )tsr&   ro   rp   r   r   r   test_series_agg_multikey*  s   
r   c               	   C   s   t g dg dg dtjddtjddtjddd} dd }| d	d
g|}| d	d
gdd }t|| d S )N)rw   rw   rw   rw   rx   rx   rx   rx   rw   rw   rw   )r   r   r   r   r   r   r   r   r   r   r   )dullr   shinyr   r   r   r   r   r   r   r   r      )rQ   rR   rS   rT   EFc                 S   s   t | jjdks
J dS )Nr   rw   )r?   valuesbaser   r   r   r   bade  s   z.test_series_agg_multi_pure_python.<locals>.badrQ   rR   c                 S   s   dS )Nrw   r   r   r   r   r   r   j  s    z3test_series_agg_multi_pure_python.<locals>.<lambda>)	r   r   r   r   r   r    r$   rb   rc   )r@   r   ro   rp   r   r   r   !test_series_agg_multi_pure_python5  s   /r   c                  C   s   dd } t g dg dtdddtdddtdddtdddgd	}|d
}|| g}|jjd |_|| }t|| d S )Nc                 S   s   t j|  ddS )Nr(   )q)r   Z
percentileZdropna)r   r   r   r   P1q  s   z test_agg_consistency.<locals>.P1)r(   r   r+   rY   )r            i  r   r   r   )Zcol1Zcol2r6   r6   r   )	r   r8   r6   r    r$   r   Zlevelsrb   rc   )r   r%   r   rp   ro   r   r   r   test_agg_consistencyn  s    

r   c               	   C   s   t ddgddgdtj} G dd d}ttjdd	 d
d	 tt| g}| dd}|D ]6}|tu s;|tju r=tnd }d}t	j
||d | d|}W d    n1 s[w   Y  t	|| q0d S )Nr(   r   r+   rY   )rw   rx   c                   @   s   e Zd Zdd ZdS )z$test_agg_callables.<locals>.fn_classc                 S   s   t |S r   r=   )selfr0   r   r   r   __call__  s   z-test_agg_callables.<locals>.fn_class.__call__N)__name__
__module____qualname__r   r   r   r   r   fn_class  s    r   c                 S      t | S r   r   r   r   r   r   r         z$test_agg_callables.<locals>.<lambda>c                 S   s   |   S r   r   r   r   r   r   r     r   rw   r=   zusing DataFrameGroupBy.sumr   )r   Zastyper   Zint64r=   r   r    r$   FutureWarningrb   assert_produces_warningrc   )r%   r   Zequiv_callablesrp   Zecallwarnr   ro   r   r   r   test_agg_callables  s$   	r   c                  C   s   t dtg dgdtg dgdtg dggddgd} | d}tg d	gtg dgg}tddgdd
}dg}t |||d}|jdd}t|| |jddd}t|| d S )Nr(   )r   r      )(   2   <   r   )r   r   r   categoryZ	arraydata)r   )r   F   Z   r^   rF   r   FZnumeric_onlyr=   )	r   r   arrayr    r   r=   rb   rc   r$   )r%   gbZexpected_dataZexpected_indexZexpected_columnrp   Zaltro   r   r   r   test_agg_over_numpy_arrays  s    
 r   	as_periodTFc                 C   s&  t dddd}| r|d d}tg d|d}|d}|d	 d
d }t|d d d d	d}d|j_t	
|| |d	 dd }tddgd	d}d|j_t	
|| |d	 dd }ttjddtjddgd	d}d|j_| rttjdtjdgd	d}d|j_t	
|| d S )Nr)   rY   UTC)rD   tzrT   )r   r   r(   r(   r   r   r   r   c                 S   
   | j d S Nr   ilocr   r   r   r   r        
 z6test_agg_tzaware_non_datetime_result.<locals>.<lambda>r   r^   c                 S   s   | j d jS r   )r   r   r   r   r   r   r     s    i  c                 S   s   | j d | j d  S )Nr   r   r   r   r   r   r     r2   r(   )days)r	   Ztz_localizeZ	to_periodr   r    r$   r   rF   r_   rb   rd   r   Z	TimedeltaoffsetsZDay)r   Zdtir%   r   ro   rp   r   r   r   $test_agg_tzaware_non_datetime_result  s(   
  r   c                     s   t jddd td fddtdD d} | d	d
 djd }| d	d
 dd jd }| d	d
  jd }| ksEJ | ksKJ | ksQJ dd tddD }td	d
gd |d} | d}| d jd   |dd jd ksJ  |	dd jd ksJ  |
 d jd ksJ d}tjt|d  |dd jd ksJ W d    n1 sw   Y  | d jd   | d jd ksJ d}tjt|d  |dd jd ksJ W d    d S 1 sw   Y  d S )Nz2016-01-01 12:00:00
US/Pacificr   r(   c                    s   g | ]
} t j|d  qS ))minutes)r8   	timedelta)r/   nnr   r   r   r1     s    z0test_agg_timezone_round_trip.<locals>.<listcomp>r   r   r   r   r   r   c                 S   s
   t | S r   )r   r   r   r   r   r   r     r   z.test_agg_timezone_round_trip.<locals>.<lambda>c                 S   s$   g | ]}t jd |ddddqS )z	2016-01-0dz	 12:00:00r   r   )r   	Timestamp)r/   ir   r   r   r1     s    r   r   rQ   rR   rQ   rR   z7DataFrameGroupBy.apply operated on the grouping columnsr   c                 S   r   r   r   r   r   r   r   r     r   )r   r(   c                 S   r   )Nr   r   r   r   r   r   r     r   )r   r   r   rl   r    r$   r   r   Znthheadr[   rb   r   DeprecationWarningapplyr]   )r%   r   r   Zresult3datesr&   r   r   r   r   test_agg_timezone_round_trip  s6    
"r   c                  C   s   t ddgddgddggtd} | d } tg d	tjd}t dg d
i|td}d|j_| djdd}t	
|| | djdd}|g  }t	
|| d S )Nr(   r   r+   rY   r   rZ   r   l    )l            l           l           )l           l           l           )rF   r   r   Fr   T)r   objectr   r   Zuint64rF   r_   r    r=   rb   rc   )r%   rF   rp   ro   r   Z	expected2r   r   r   test_sum_uint64_overflow  s    

r   zstructure, expectedrS   )r(   r(   r(   )r+   rY   rY   ))r(   r(   )r+   rY   c                 C   r   r   tupler   r   r   r   r   $  r   r   c                 C   r   r   rN   r   r   r   r   r   (  r   c                 C   sL   t g dg dg dd}|ddg| }ddg|j_t|| d S )Nr(   r(   r(   r+   r+   r+   r(   r(   r(   rY   rY   rY   r(   r(   r(   r+   rY   rY   r   rQ   rR   )r   r    r>   rF   namesrb   rc   Z	structurerp   r%   ro   r   r   r   test_agg_structs_dataframe  s   r   r(   r+   r`   c                 C   r   r   r   r   r   r   r   r   <  r   c                 C   r   r   r   r   r   r   r   r   =  r   c                 C   sH   t g dg dg dd}|dd | }d|j_t|| d S )Nr   r   r   r   rQ   rS   )r   r    r>   rF   r_   rb   rd   r   r   r   r   test_agg_structs_series7  s   r   c                 C   s   g d}t tjg d|dg dd}d}tjt|d |jd| d	jt	j
}W d    n1 s4w   Y  tg d
tjg d|dddd}| rR||dk }t|| d S )Nrr   )r   r   r   )
categories)r(   r   r+   r   zusing SeriesGroupBy.sumr   rQ   )observed)r+   r+   r   )r   r_   rR   r`   r   )r   r   ZCategoricalrb   r   r   r    rR   r$   r   Znansumr   ZCategoricalIndexrd   )r   r   r%   r   ro   rp   r   r   r   test_agg_category_nansumK  s    r   c                  C   s   t dd tdD dd tdD d} | jdddd}|dd	d
 i}t dd tdD dd tdD d}t|| d S )Nc                 S      g | ]}t |qS r   strr.   r   r   r   r1   _  r2   z+test_agg_list_like_func.<locals>.<listcomp>r+   r   rQ   F)Zas_indexsortrR   c                 S   r   r   r   r   r   r   r   r   a  r   z)test_agg_list_like_func.<locals>.<lambda>c                 S   r   r   r   r.   r   r   r   r1   c  r2   c                 S   s   g | ]}t |gqS r   r   r.   r   r   r   r1   c  s    )r   rl   r    r$   rb   rc   )r%   r&   ro   rp   r   r   r   test_agg_list_like_func]  s   *$r   c                  C   sx   t ddgtjdddtjdddgd} | ddd	d
 i}t tjdddgtdgdddgd}t|| d S )Nr(   z
2018-01-01r   r   z
2018-01-02)tagr6   r   r6   c                 S   s
   |  dS )Nr(   )r   )er   r   r   r   s  r   z/test_agg_lambda_with_timezone.<locals>.<lambda>r^   r   )r   r   r   r    r$   r   rb   rc   )r%   ro   rp   r   r   r   test_agg_lambda_with_timezoneh  s   	r   err_clsc           	         s   ddl m}m}m} | d d }tg dg d||d}t||d |d g} fdd	}|d
 |d |}tj	||dd d S )Nr   )DecimalArray	make_data
to_decimalr   )r   r   r   r(   r(   )r   r(   r   r(   r(   )id1Zid2decimalsr+   c                    s   t | dkr | jd S r   )r?   r   r   r   r   r   
weird_func  s   
z1test_groupby_agg_err_catching.<locals>.weird_funcr  r   F)Zcheck_names)
Z$pandas.tests.extension.decimal.arrayr   r   r   r   r   r    r$   rb   rd   )	r   r   r   r   r@   r%   rp   r  ro   r   r  r   test_groupby_agg_err_catching|  s   r  )=__doc__r9   r8   	functoolsr   numpyr   r!   Zpandas.errorsr   Zpandasr   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingrb   Zpandas.io.formats.printingr   r'   rA   rP   rh   rq   ru   r   r   r   r   r   r   r   r   r   r   markZparametrizer   r   r   r   rN   r   r   r   r   r   NotImplementedErrorRuntimeErrorr   
IndexErrorOSError
ValueErrorArithmeticErrorAttributeErrorr  r   r   r   r   <module>   s    $	%&/9
&

 $
	