o
    d0M                     @   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  tjtdd	 || W d    d S 1 sSw   Y  d S )
N   )ar   br   r   )onetwor   r   r   )data1data2key1key2r   c                 S   s   |   |   S N)maxmin)arr r   n/var/www/html/visualizacion-main/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randn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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>8       z,test_agg_datetimes_mixed.<locals>.<listcomp>c                 S   r.   r)   r   r0   r   r   r   r3   9   r4   c                 S   r.   r,   r   r0   r   r   r   r3   :   r4   )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strptimer8   )r1   rowr   r   r   r3   >   s     c                 S   r.   r/   r   r0   r   r   r   r3   I   r4   c                 S   r.   r5   r   r0   r   r   r   r3   J   r4   c                 S   r.   r6   r   r0   r   r   r   r3   K   r4   r9   weightsr8   )r   sumr!   	aggregater   len)datadf1df2gb1gb2r   r   r   test_agg_datetimes_mixed3   s*   	rG   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Mr-   )freqperiodsr,   indexr   )levelz1999-01r   )startrJ   rI   )s1s2)r
   r   r   r   r    r!   r?   
isinstancerL   r   r   randrA   	from_dictmonthlist)prngr&   rsrL   rO   rP   r'   r   r   r   test_agg_period_indexX   s   rX   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)ArY   BrZ   Cr[   Dr\   z1/1/2011   H)rJ   rI   )classtime)r   r)   r,   r   r`   )r   r-         r_   first)r   r-   ra      last)r,   r,   r,   r,   ABCDnamerL   rh   )r   r)   r)   r,   )r   r	   loc	set_indexr!   tmassert_frame_equalrc   r%   assert_series_equalr`   re   r   r   rU   rA   sizecount)r&   expr'   r   r   r   *test_agg_dict_parameter_cast_result_dtypesg   s2   

rr   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;   r0   r   r   r   r3      s    z0test_agg_cast_results_dtypes.<locals>.<listcomp>   aaabbbbbbccd)XYru   rv   )	rangerU   r   r!   r%   rA   rp   rl   rn   )uvr&   resultexpectedr   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)   r,   r-   ra   r   )r)   r,   r,   ra   r   r   r   cr   )r)   g      @ra   r   )r)   r,   ra   r   rK   r   )r   r~   r~   )r   rL   rh   r!   meanrl   rm   )r&   r{   rz   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   r]   r+   rY   rZ   r[   r\   rY   rZ   r[   r\   r?   r   r)   )axisT)
check_liker[   r\   z&Column\(s\) \['r', 'r2'\] do not existr   )rr2)r   r   r   r    aranger!   r   r?   r%   pdconcatcolumnsrl   rm   r   from_productr"   r#   KeyError)	r&   r'   c_meanc_sumd_meand_sumrz   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)   r,   r,   r   rY   rZ   r[   nested renamer is not supportedr   rY   r   r?   r   r   rp   r   )rZ   r[   z!Column\(s\) \['ma'\] do not existrZ   r[   ma)	r   rw   r"   r#   r   r!   r%   r   rZ   )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   r]   r+   r   rY   rZ   r   r   r\   r[   r?   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   r]   r+   r   rY   rZ   r   r   r[   r   r?   r\   )r1r   rar   rbr   )result1result2)r\   r   )r   r   r   r    r   r!   r"   r#   r   r@   r%   r?   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 | d| W d    d S 1 s)w   Y  d S )	N
   )   r   )ro   c                 S   s   t d t |   td)Nz(----------------------------------------test)r   	to_stringr$   )r&   r   r   r   raiseException!  s   z=test_agg_item_by_item_raise_typeerror.<locals>.raiseExceptionr   r   r   )	r   r   r   randintr"   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r2   r   r   r   <lambda>,      z*test_series_agg_multikey.<locals>.<lambda>c                 S   r   r   )rT   r   r   r   r   r   ,  r   )rl   makeTimeSeriesr!   r%   r   r?   rn   )tsr'   rz   r{   r   r   r   test_series_agg_multikey*  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      )rY   rZ   r[   r\   EFc                 S   s   t | jjdks
J dS )Nr   r   )rA   valuesbaser   r   r   r   badc  s   z.test_series_agg_multi_pure_python.<locals>.badrY   rZ   c                 S   s   dS )Nr   r   r   r   r   r   r   h  s    z3test_series_agg_multi_pure_python.<locals>.<lambda>)r   r   r   r    r!   r%   rl   rm   )rB   r   rz   r{   r   r   r   !test_series_agg_multi_pure_python3  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   P1o  s   z test_agg_consistency.<locals>.P1)r)   r,   r-   ra   )r            i  r,   r   r   )col1col2r8   r8   r   )	r   r:   r8   r!   r%   r   levelsrl   rm   )r   r&   r   r{   rz   r   r   r   test_agg_consistencyl  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)   r,   r-   ra   )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   r?   )selfr2   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   int64r?   r   r!   r%   rl   rm   )r&   r   equiv_callablesr{   ecallrz   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   category	arraydata)r   )r   F   Z   rg   rL   r   Fnumeric_onlyr?   )	r   r   arrayr!   r   r?   rl   rm   r%   )r&   gbexpected_dataexpected_indexexpected_columnr{   altrz   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*   ra   UTC)rJ   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>r,   rg   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     r4   r)   )days)r	   tz_localize	to_periodr   r!   r%   r   rL   rh   rl   rn   r   	TimedeltaoffsetsDay)r   dtir&   r   rz   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)r1   nnr   r   r   r3     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)r1   ir   r   r   r3     s    r   r,   rY   rZ   rY   rZ   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   rw   r!   r%   r   r   r   nthheadrc   applyre   )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|td}d|j_| djdd}t	
|| | djdd}|g  }t	
|| d S )Nr)   r,   r-   ra   r   rb   )dtypel    )l            l           l           )l           l           l           )rL   r
  r   Fr   T)r   objectr   r   uint64rL   rh   r!   r?   rl   rm   )r&   rL   r{   rz   r   	expected2r   r   r   test_sum_uint64_overflow  s    

r  zstructure, expectedr[   )r)   r)   r)   )r-   ra   ra   ))r)   r)   )r-   ra   c                 C   r   r   tupler   r   r   r   r     r   r   c                 C   r   r   rU   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)   ra   ra   ra   r)   r)   r)   r-   ra   ra   r   rY   rZ   )r   r!   r@   rL   namesrl   rm   	structurer{   r&   rz   r   r   r   test_agg_structs_dataframe  s   r  r)   r-   ri   c                 C   r   r   r  r   r   r   r   r   3  r   c                 C   r   r   r  r   r   r   r   r   4  r   c                 C   sH   t g dg dg dd}|dd | }d|j_t|| d S )Nr  r  r  r   rY   r[   )r   r!   r@   rL   rh   rl   rn   r  r   r   r   test_agg_structs_series.  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)   r,   r-   r  rY   )observed)r-   r-   r   )r  rh   rZ   ri   r   )r   r   Categoricalr!   rZ   r%   r   nansumr   CategoricalIndexrl   rn   )r  r  r&   rz   r{   r   r   r   test_agg_category_nansumB  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   strr0   r   r   r   r3   T  r4   z+test_agg_list_like_func.<locals>.<listcomp>r-   r  rY   F)as_indexsortrZ   c                 S   r   r   r  r   r   r   r   r   V  r   z)test_agg_list_like_func.<locals>.<lambda>c                 S   r   r   r!  r0   r   r   r   r3   X  r4   c                 S   s   g | ]}t |gqS r   r!  r0   r   r   r   r3   X  s    )r   rw   r!   r%   rl   rm   )r&   r'   rz   r{   r   r   r   test_agg_list_like_funcR  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)tagr8   r&  r8   c                 S   s
   |  dS )Nr)   )r  )er   r   r   r   h  r   z/test_agg_lambda_with_timezone.<locals>.<lambda>rg   r   )r   r   r  r!   r%   r   rl   rm   )r&   rz   r{   r   r   r   test_agg_lambda_with_timezone]  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decimalsr-   c                    s   t | dkr | jd S r   )rA   r   r   r)  r   r   
weird_func  s   
z1test_groupby_agg_err_catching.<locals>.weird_funcr/  r-  F)check_names)
$pandas.tests.extension.decimal.arrayr*  r+  r,  r   r   r!   r%   rl   rn   )	r)  r*  r+  r,  rB   r&   r{   r1  rz   r   r0  r   test_groupby_agg_err_catchingq  s   r4  )=__doc__r;   r:   	functoolsr   numpyr   r"   pandas.errorsr   pandasr   r   r   r   r   r   r	   r
   pandas._testing_testingrl   pandas.io.formats.printingr   r(   rG   rX   rr   r|   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r	  r  r  rU   r  r  r  r%  r(  NotImplementedErrorRuntimeErrorr   
IndexErrorOSError
ValueErrorArithmeticErrorAttributeErrorr4  r   r   r   r   <module>   s    $	%&/	9
"

 $
	