o
    5cN                     @   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tjdg dg dd} | d}dd }tjtdd	 ||g}W d    n1 s6w   Y  d
dg|_	tjtdd	 ||}W d    n1 sWw   Y  t
|| d S )N   )ar   br   r   )onetwor   r   r   )data1data2key1key2r   c                 S   s   |   |   S N)maxmin)arr r   _/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/groupby/aggregate/test_other.pypeak_to_peak+   s   z"test_agg_api.<locals>.peak_to_peakz)\['key2'\] did not aggregate successfullymatchr   r   )r   nprandomrandngroupbytmassert_produces_warningFutureWarningaggcolumnsassert_frame_equal)dfgroupedr   expectedresultr   r   r   test_agg_api   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tj}|d |d   |d< |dtj}t|t|kstJ d S )N)   
2012-01-01      ?)   z
2012-01-02g       @)   Ng      @c                 S      g | ]}|d  qS r   r   .0xr   r   r   
<listcomp>B       z,test_agg_datetimes_mixed.<locals>.<listcomp>c                 S   r2   r-   r   r4   r   r   r   r7   C   r8   c                 S   r2   r0   r   r4   r   r   r   r7   D   r8   )keydatevaluec                 S   s<   g | ]}|d  |d rt j|d d nd|d gqS )r   r-   z%Y-%m-%dNr0   )dtdatetimestrptimer<   )r5   rowr   r   r   r7   H   s     c                 S   r2   r3   r   r4   r   r   r   r7   S   r8   c                 S   r2   r9   r   r4   r   r   r   r7   T   r8   c                 S   r2   r:   r   r4   r   r   r   r7   U   r8   r=   weightsr<   )r   sumr!   	aggregater   len)datadf1df2gb1gb2r   r   r   test_agg_datetimes_mixed=   s*   	rK   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t||d}t
tjt||d}t||d}||jj}t| d S )Nz2012-1-1Mr1   )freqperiodsr0   indexr   )levelz1999-01r   )startrN   rM   )s1s2)r
   r   r   r   r    r!   rC   
isinstancerP   r   r   randrE   	from_dictmonthlist)prngr(   rsrP   rS   rT   r)   r   r   r   test_agg_period_indexb   s   r\   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)Ar]   Br^   Cr_   Dr`   z1/1/2011   H)rN   rM   )classtime)r   r-   r0   r   rd   )r   r1         rc   first)r   r1   re      last)r0   r0   r0   r0   ABCDnamerP   rl   )r   r-   r-   r0   )r   r	   loc	set_indexr!   r"   r'   rg   r%   assert_series_equalrd   ri   r   r   rY   rE   sizecount)r(   expr)   r   r   r   *test_agg_dict_parameter_cast_result_dtypesq   s2   

rt   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-   )r>   r?   r4   r   r   r   r7      s    z0test_agg_cast_results_dtypes.<locals>.<listcomp>   aaabbbbbbccd)XYrw   rx   )	rangerY   r   r!   r%   rE   rr   r"   rp   )uvr(   r+   r*   r   r   r   test_agg_cast_results_dtypes   s   r|   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-   r0   r1   re   r   )r-   r0   r0   re   r   r   r   cr   )r-   g      @re   r   )r-   r0   re   r   rO   r   )r   r~   r~   )r   rP   rl   r!   meanr"   r'   )r(   r*   r+   r   r   r   test_aggregate_float64_no_int64   s   r   c            	      C   s  t g dg dtj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 |tjtjg}t	j
||||gdd}tdd	gd
dgg|_tj||dd |d	dg tjtj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 tjtjd W d    d S 1 sw   Y  d S )Nfoobarr   r   r   r   r   r   r   r   r   r   r   r   r   r   ra   r/   r]   r^   r_   r`   r]   r^   r_   r`   rC   r   r-   )axisT)
check_liker_   r`   z&Column\(s\) \['r', 'r2'\] do not existr   )rr2)r   r   r   r    aranger!   r   rC   r%   pdconcatr&   r"   r'   r   from_productpytestraisesKeyError)	r(   r)   c_meanc_sumd_meand_sumr+   r*   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-   r0   r0   r   r]   r^   r_   nested renamer is not supportedr   r]   r   rC   r   r   rr   r   )r^   r_   z!Column\(s\) \['ma'\] do not existr^   r_   ma)	r   ry   r   r   r   r!   r%   r   r^   )r(   r   r   r   r   "test_agg_dict_renaming_deprecation   s   
"r   c                  C   s   t g dg dtj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 s^w   Y  d S )Nr   r   ra   r/   r   r]   r^   r   r   r`   r_   rC   stdr   )
r   r   r   r    r   r!   r   r   r   r%   r(   gr   r   r   r   test_agg_compat   s   	"r   c                  C   sl  t g dg dtj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 sAw   Y  tjt|d	 |
dddgidddgid W d    n1 shw   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 )Nr   r   ra   r/   r   r]   r^   r   r   r_   r   rC   r`   )r1r   rar   rbr   )result1result2)r`   r   )r   r   r   r    r   r!   r   r   r   rD   r%   rC   r   r   r   r   r   test_agg_nested_dicts  s*   	"""r   c               	   C   s   t tjjddd} dd }tjtdd0 tjt	dd | 
d	| W d    n1 s0w   Y  W d    d S W d    d S 1 sHw   Y  d S )
N
   )   r   )rq   c                 S   s   t d t |   td)Nz(----------------------------------------test)r   	to_string	TypeError)r(   r   r   r   raiseException+  s   z=test_agg_item_by_item_raise_typeerror.<locals>.raiseExceptionr   r   zDropping invalidr   )r   r   r   randintr   r   r   r"   r#   r$   r!   r%   )r(   r   r   r   r   %test_agg_item_by_item_raise_typeerror(  s   "r   c                  C   sB   t  } | dd dd g}|tj}| }t || d S )Nc                 S      | j S r   )yearr6   r   r   r   <lambda>7      z*test_series_agg_multikey.<locals>.<lambda>c                 S   r   r   )rX   r   r   r   r   r   7  r   )r"   makeTimeSeriesr!   r%   r   rC   rp   )tsr)   r+   r*   r   r   r   test_series_agg_multikey5  s
   r   c               	   C   s~   t g dg dg dtjdtjdtjdd} dd }| dd	g|}| dd	gd
d }t|| d S )N)r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )dullr   shinyr   r   r   r   r   r   r   r      )r]   r^   r_   r`   EFc                 S   s   t | jjdks
J dS )Nr   r   )rE   valuesbaser   r   r   r   badn  s   z.test_series_agg_multi_pure_python.<locals>.badr]   r^   c                 S   s   dS )Nr   r   r   r   r   r   r   s  s    z3test_series_agg_multi_pure_python.<locals>.<lambda>)r   r   r   r    r!   r%   r"   r'   )rF   r   r+   r*   r   r   r   !test_series_agg_multi_pure_python>  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   
percentiledropna)r   r   r   r   P1z  s   z test_agg_consistency.<locals>.P1)r-   r0   r1   re   )r            i  r0   r   r   )col1col2r<   r<   r   )	r   r>   r<   r!   r%   r&   levelsr"   r'   )r   r(   r   r*   r+   r   r   r   test_agg_consistencyw  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t}|D ]}| d|}t	|| q0d S )Nr-   r0   r1   re   )r   r   c                   @   s   e Zd Zdd ZdS )z$test_agg_callables.<locals>.fn_classc                 S   s   t |S r   rC   )selfr6   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   r   )
r   astyper   int64rC   r   r!   r%   r"   r'   )r(   r   equiv_callablesr*   ecallr+   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   <   r0   )r   r   r   category	arraydata)r&   )r   F   Z   rk   rP   r&   Fnumeric_onlyrC   )	r   r   arrayr!   r   rC   r"   r'   r%   )r(   gbexpected_dataexpected_indexexpected_columnr*   altr+   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.   re   UTC)rN   tzr`   )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>r0   rk   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     r8   r-   )days)r	   tz_localize	to_periodr   r!   r%   r   rP   rl   r"   rp   r   	TimedeltaoffsetsDay)r   dtir(   r   r+   r*   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
 tjjd }| d	d
 dd jd }| d	d
  jd }| ksFJ | ksLJ | ksRJ 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d jd ksJ | d jd   | d jd ksJ  |dd jd ksJ d S )Nz2016-01-01 12:00:00
US/Pacificr   r-   c                    s   g | ]
} t j|d  qS ))minutes)r>   	timedelta)r5   nnr   r   r   r7     s    z0test_agg_timezone_round_trip.<locals>.<listcomp>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)r5   ir   r   r   r7     s    r   r0   r]   r^   r]   r^   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   ry   r!   r%   r   r   r   nthheadrg   applyri   )r(   r   r   result3datesr)   r   r  r   test_agg_timezone_round_trip  s*    
 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|d}d|j_| djdd}t	
|| | djdd}|g  }t	
|| d S )Nr-   r0   r1   re   r   rf   )dtypel    )l            l           l           )l           l           l           rO   r   Fr   T)r   objectr   r   uint64rP   rl   r!   rC   r"   r'   )r(   rP   r*   r+   r   	expected2r   r   r   test_sum_uint64_overflow  s   

r  zstructure, expectedr_   )r-   r-   r-   )r1   re   re   ))r-   r-   )r1   re   c                 C   r   r   tupler   r   r   r   r   %  r   r   c                 C   r   r   rY   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-   r1   r1   r1   r-   r-   r-   re   re   re   r-   r-   r-   r1   re   re   r   r]   r^   )r   r!   rD   rP   namesr"   r'   	structurer*   r(   r+   r   r   r   test_agg_structs_dataframe  s   r  r-   r1   rm   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   r]   r_   )r   r!   rD   rP   rl   r"   rp   r  r   r   r   test_agg_structs_series8  s   r  c                 C   s   g d}t tjg d|dg dd}|jd| djtj}tg dtj	g d|dd	d
d}| r9||dk }t
|| d S )Nr}   )r   r   r   )
categories)r-   r0   r1   r  r]   )observed)r1   r1   r   )r  rl   r^   rm   r   )r   r   Categoricalr!   r^   r%   r   nansumr   CategoricalIndexr"   rp   )r  r  r(   r+   r*   r   r   r   test_agg_category_nansumL  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   strr4   r   r   r   r7   ^  r8   z+test_agg_list_like_func.<locals>.<listcomp>r1   r  r]   F)as_indexsortr^   c                 S   r   r   r  r   r   r   r   r   `  r   z)test_agg_list_like_func.<locals>.<lambda>c                 S   r"  r   r#  r4   r   r   r   r7   b  r8   c                 S   s   g | ]}t |gqS r   r#  r4   r   r   r   r7   b  s    )r   ry   r!   r%   r"   r'   )r(   r)   r+   r*   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)tagr<   r(  r<   c                 S   s
   |  dS )Nr-   )r  )er   r   r   r   r  r   z/test_agg_lambda_with_timezone.<locals>.<lambda>rk   r   )r   r   r  r!   r%   r   r"   r'   )r(   r+   r*   r   r   r   test_agg_lambda_with_timezoneg  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-   )id1id2decimalsr1   c                    s   t | dkr | jd S r   )rE   r   r   r+  r   r   
weird_func  s   
z1test_groupby_agg_err_catching.<locals>.weird_funcr1  r/  F)check_names)
$pandas.tests.extension.decimal.arrayr,  r-  r.  r   r   r!   r%   r"   rp   )	r+  r,  r-  r.  rF   r(   r*   r3  r+   r   r2  r   test_groupby_agg_err_catching{  s   r6  )=__doc__r?   r>   	functoolsr   numpyr   r   pandas.errorsr   pandasr   r   r   r   r   r   r	   r
   pandas._testing_testingr"   pandas.io.formats.printingr   r,   rK   r\   rt   r|   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r  r  r  rY   r  r  r!  r'  r*  NotImplementedErrorRuntimeErrorr   
IndexErrorOSError
ValueErrorArithmeticErrorAttributeErrorr6  r   r   r   r   <module>   s    $	!%&/	9
"

 $
	