a
    PfW                     @   s<  d dl Zd dl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 ejddgddd Zd	d
 Zdd Zdd Zejdddgdd Zdd Zejddi d fdddidfdi dfdddidfg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/d0 Z"ejd1d2d2ej#gd2d3ej#ggd4d5 Z$d6d7 Z%d8d9 Z&d:d; Z'ejd<ed=d> Z(d?d@ Z)dAdB Z*ejdCe+dDdE gdFdG Z,dHdI Z-ejdJdKdLgdMdN Z.dOdP Z/dQdR Z0ejdSdKi fdLddifdLddifgdTdU Z1dVdW Z2ejdXeddge3d dYgdZeej4ddggdd d[d\d]feej5d^ej6d]e
d_d^d`dadbeej4ddggd^d d[d\d]fgejdcddgddde Z7ejdfdee8d^d\d]fdggdhdi Z9djdk Z:ejdlej;gdmgfej;ej<gdmdngfe=ej;gdmgfe=ej;ej<gdmdngfgejdodKi gdLddigdLddiggdpdq Z>ejdrdsej;iej;ej<dtedsej;ieej;ej<dtgejdodKi gdLddigdLddiggdudv Z?ejdlej@gdwgfejAej@gdxdwgfe=ej@gdwgfe=ejAej@gdxdwgfgdydz ZBejd{d|dE gedEg d}ifd~dE gedgdEgdZfgdd ZCejdrdsej@iej@ejDdtedsej@ieej@ejDdtgdd ZEejd{dddE ieg d}eFdgd eGdgdZfdddE iedgdgdZfgdd ZHdd ZIdd ZJdd ZKdS )    N)	DataFrameIndex
MultiIndexSeriesconcat
date_rangetimedelta_range)series_transform_kernelsFcompat)paramsc                 C   s   | j S N)param)request r   ]/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/apply/test_series_apply.pyby_row   s    r   c                    sb   t tdddd} fdd}|j| d}|dd	 }t|| t g d
}t|| d S )Nz	1 day 1 s   h)periodsfreqc                    s    r|   S | j  S r   )total_secondsdtxr   r   r   f   s    z(test_series_map_box_timedelta.<locals>.fr   c                 S   s   |   S r   )r   r   r   r   r   <lambda>        z/test_series_map_box_timedelta.<locals>.<lambda>)g    @g    @g    @)r   r   applymaptmassert_series_equal)r   serr   resultexpectedr   r   r   test_series_map_box_timedelta   s    r%   c                 C   s  | j tj|d}tjdd t| }W d    n1 s<0    Y  t|| | j tj|d}t| }t|| ttdt	g ddd}|j dd	 |d}t|| ||usJ |j
|j
u sJ |j|jksJ |j|jksJ tg d
tjd}|j dd	 |d}t|| d S )Nr   ignoreallfoobarname)dtyper,   indexc                 S   s   | S r   r   r   r   r   r   r   4   r   ztest_apply.<locals>.<lambda>      r   r.   r-   c                 S   s   | S r   r   r   r   r   r   r   ?   r   )r   npsqrterrstater    r!   expr   objectr   r.   r-   r,   float64)datetime_seriesr   r#   r$   srsr   r   r   
test_apply'   s"    (
r<   c                  C   s<   t ddg} dd }| j|dd}| |}t|| d S )Nr0   r1   c                 S   s   | | d fS Nr0   r   r   r   r   r   r   F   s    z3test_apply_map_same_length_inference_bug.<locals>.fr
   r   )r   r   r   r    r!   )r:   r   r#   r$   r   r   r   (test_apply_map_same_length_inference_bugC   s
    
r>   convert_dtypeTc                 C   s\   t tjdd}dd }tt  |j|| dd W d    n1 sN0    Y  d S )Nr1   
   c                 S   s   | dkr| S t jS )Nr   )r3   nanr   r   r   r   funcR   s    z1test_apply_convert_dtype_deprecated.<locals>.funcr
   )r?   r   )	r   r3   randomZdefault_rngZstandard_normalr    assert_produces_warningFutureWarningr   )r?   r"   rB   r   r   r   #test_apply_convert_dtype_deprecatedN   s    rF   c                  C   sD   t dg} | jtjdd}|d ddgks.J t|d ts@J d S )Nzfoo,bar),argsr   r)   r*   )r   r   strsplit
isinstancelist)r:   r#   r   r   r   test_apply_argsY   s    
rN   zargs, kwargs, incrementr   ar0   )r1   r       )r0   cr1      c                 C   sz   ddd}t ddg}d}tjt|d* |j|dg| R i |}W d    n1 sX0    Y  || }t|| d S )	Nr   c                 S   s   | | d|  d|  S )Nr@   d   r   )r   rO   brQ   r   r   r   r   g   s    ztest_agg_args.<locals>.fr0   r1   zhin Series.agg cannot aggregate and has been deprecated. Use Series.transform to keep behavior unchanged.match)r   r   r   )r   r    rD   rE   aggr!   )rI   kwargs	incrementr   r:   msgr#   r$   r   r   r   test_agg_argsa   s    
8r[   c                  C   s   t g d} ddd}ddd}d	}tjt|d
" | j|dddd W d    n1 sZ0    Y  tjt|d
& | j||gdddd W d    n1 s0    Y  tjt|d
( | j||ddddd W d    n1 s0    Y  d S )Nr/   r0   r   c                 S   s   | | | S r   r   )r   rO   rQ   r   r   r   foo1y   s    z.test_agg_mapping_func_deprecated.<locals>.foo1r1   c                 S   s   | | | S r   r   )r   rT   rQ   r   r   r   foo2|   s    z.test_agg_mapping_func_deprecated.<locals>.foo2z+using .+ in Series.agg cannot aggregate andrU   r      )rQ   )rO   rT   )r0   r   )r1   r   )r   r    rD   rE   rW   )r:   r\   r]   rZ   r   r   r    test_agg_mapping_func_deprecatedu   s    

04r_   c                 C   s   t tddd}dd }| s`d}tjt|d |j|| d W d    n1 sR0    Y  d S |j|| d}||}t|| d S )	Nz1/1/2000r@   r   c                 S   s   | j | j| jfS r   )hourdaymonthr   r   r   r   rB      s    z2test_series_apply_map_box_timestamps.<locals>.funcz&Series' object has no attribute 'hour'rU   r   )	r   r   pytestraisesAttributeErrorr   r   r    r!   )r   r"   rB   rZ   r#   r$   r   r   r   $test_series_apply_map_box_timestamps   s    ,
rg   c                  C   s\   t dt dg} t| dd}|jdks.J |jdd dd	}td
dg}t|| d S )N
2011-01-01
2011-01-02zM8[ns]r-   zdatetime64[ns]c                 S   s   t | j d| j d| j S N_type__name__rb   tzr   r   r   r   r      r   z%test_apply_box_dt64.<locals>.<lambda>r
   r   ZTimestamp_1_NoneZTimestamp_2_Nonepd	Timestampr   r-   r   r    r!   valsr"   resr6   r   r   r   test_apply_box_dt64   s    rw   c                  C   sd   t jdddt jdddg} t| dd}|jdks6J |jdd	 d
d}tddg}t|| d S )Nrh   z
US/Eastern)rp   ri   zM8[ns, US/Eastern]rj   zdatetime64[ns, US/Eastern]c                 S   s   t | j d| j d| j S rk   rm   r   r   r   r   r      r   z'test_apply_box_dt64tz.<locals>.<lambda>r
   r   zTimestamp_1_US/EasternzTimestamp_2_US/Easternrq   rt   r   r   r   test_apply_box_dt64tz   s    rx   c                  C   sX   t dt dg} t| }|jdks*J |jdd dd}tdd	g}t|| d S )
Nz1 daysz2 daysztimedelta64[ns]c                 S   s   t | j d| j S rk   )rn   ro   daysr   r   r   r   r      r   z%test_apply_box_td64.<locals>.<lambda>r
   r   ZTimedelta_1ZTimedelta_2)rr   Z	Timedeltar   r-   r   r    r!   rt   r   r   r   test_apply_box_td64   s    rz   c                  C   s`   t jdddt jdddg} t| }|jdks2J |jdd dd	}td
d
g}t|| d S )Nrh   Mr   ri   z	Period[M]c                 S   s   t | j d| j S rk   )rn   ro   Zfreqstrr   r   r   r   r      r   z'test_apply_box_period.<locals>.<lambda>r
   r   ZPeriod_M)rr   ZPeriodr   r-   r   r    r!   rt   r   r   r   test_apply_box_period   s    r}   c                    s   t ddddd}t|dd}|jdd	  d
}t ddddd}t|dd}t|| |j fdd	 d
}tttddg d rdndd}t||  fdd}|j| d
} rtdgd dd}t|| n|dksJ d S )Nrh   ri   r   r|   z
Asia/TokyoXXr+   c                 S   s   | t j  S r   )rr   offsetsZDayr   r   r   r   r      r   z'test_apply_datetimetz.<locals>.<lambda>r   z
2011-01-03c                    s    r
| j S | jj S r   )ra   r   r   r   r   r   r      r      r   int64Zint32r,   r-   c                    s    rt | jS t | jjS r   )rJ   rp   r   r   r   r   r   r      s    z test_apply_datetimetz.<locals>.f   )r   tz_localizer   r   r    r!   rM   range)r   valuesr:   r#   Z
exp_valuesr6   r   r   r   r   test_apply_datetimetz   s"    $r   c                 C   s<  t jtdtddd}t|dtdd}| sd}tjt|d	" |jd
d | d W d    n1 sh0    Y  |jdd | ddksJ d S |jdd | d}t jtdtddd}t|dtdd}t	|| t
|j|j |dd }tdgd dtdd}t	|| |s.|jtks8nds8J d S )NZABBABCDZDCBAT)
categoriesorderedr~   Zabcdefg)r,   r.   z&Series' object has no attribute 'lowerrU   c                 S   s   |   S r   lowerr   r   r   r   r      r   z(test_apply_categorical.<locals>.<lambda>r   c                 S   s   dS NAr   r   r   r   r   r      r   r   c                 S   s   |   S r   r   r   r   r   r   r      r   ZabbabcdZdcbac                 S   s   dS r   r   r   r   r   r   r      r      zstring[pyarrow_numpy])rr   ZCategoricalrM   r   rd   re   rf   r   r    r!   Zassert_categorical_equalr   r-   r7   )r   Zusing_infer_stringr   r"   rZ   r#   r6   r   r   r   test_apply_categorical   s"    0r   seriesz1-1z1-2c                 C   s   t | dd}|sXd}tjt|d" |jdd |d W d    n1 sJ0    Y  d S |jdd |d}|t}t d	d	tjgdd}|t}t	
|| d S )
Ncategoryrj   z('Series' object has no attribute 'split'rU   c                 S   s   |  dd S N-r   rK   r   r   r   r   r     r   z8test_apply_categorical_with_nan_values.<locals>.<lambda>r   c                 S   s   |  dd S r   r   r   r   r   r   r     r   1)r   rd   re   rf   r   Zastyper7   r3   rA   r    r!   )r   r   r:   rZ   r#   r$   r   r   r   &test_apply_categorical_with_nan_values   s    0

r   c                 C   s8   t g tdddtd}|jdd | d}t|| d S )Nz
2018-01-01r   )startr   r2   c                 S   s   | S r   r   r   r   r   r   r     r   zEtest_apply_empty_integer_series_with_datetime_index.<locals>.<lambda>r   )r   r   intr   r    r!   )r   r:   r#   r   r   r   3test_apply_empty_integer_series_with_datetime_index  s    r   c                  C   sh   t tg ddgd} t g ddgd}dd }|d j|| fd}tg d	dd
d}t|| d S )N)r0   r1   r   r^      Numbers)columns)r1   r   r1   r0   r1   ZIndicesc                 S   s   |d j |  }|S )Nr   )Ziloc)Z	targetRowZtargetDFvalr   r   r   retrieve  s    z+test_apply_dataframe_iloc.<locals>.retrieverH   )r   r^   r   r1   r   uint64r   )r   r3   r   r   r   r    r!   )ZuintDFZindexDFr   r#   r$   r   r   r   test_apply_dataframe_iloc  s    r   c                 C   sH  t jdd$ t | }t | }| jt j|d}| }t|| | jt jg|d}|  }dg|_	t
|| | jdg|d}t
|| t||gdd}ddg|_	| jt jt jg|d}t
|| t||gdd}dd	g|_	| d
}| jt jt jd|d}t||| W d    n1 s:0    Y  d S )Nr&   r'   r   r4   r0   Zaxisabsoluter)   r*   r   )r)   r*   )r3   r5   r4   absr   copyr    r!   Zto_framer   assert_frame_equalr   ZunstackrenameZreindex_like)string_seriesr   Zf_sqrtZf_absr#   r$   r   r   r   test_transform  s*    



r   opc                 C   s\  | dv r"| tjj|  dd tdtg }| dv rBt}d}nt}ddd	g}tj	||d
 |
| dg W d    n1 s0    Y  tj	||d
  |
| dd W d    n1 s0    Y  tj	||d
$ |
| gdgd W d    n1 s0    Y  tj	||d
& |
| dg| gd W d    n1 sN0    Y  d S )N)ZffillZbfillpadZbackfillshiftz is successful on any dtype)reasonr   )ZfillnaZngroupTransform function failed|z4not supported between instances of 'type' and 'type'zunsupported operand typerU   r   r   B)Zapplymarkerrd   markZxfailr   r7   
ValueError	TypeErrorjoinre   	transform)r   r   r"   errorrZ   r   r   r   test_transform_partial_failureE  s,    ,.4r   c                  C   s(  dd } dd }t dtg }d}tjt|d || |g W d    n1 sT0    Y  tjt|d  ||| d W d    n1 s0    Y  tjt|d$ ||g| gd W d    n1 s0    Y  tjt|d& || |g| gd W d    n1 s0    Y  d S )	Nc                 S   s   | S r   r   r   r   r   r   noopk  s    z7test_transform_partial_failure_valueerror.<locals>.noopc                 S   s   t d S r   )r   )rl   r   r   r   
raising_opn  s    z=test_transform_partial_failure_valueerror.<locals>.raising_opr   r   rU   r   )r   r7   rd   re   r   r   )r   r   r"   rZ   r   r   r   )test_transform_partial_failure_valueerrori  s    ,.2r   c                  C   sr   t tdddd} | ddg}t ddgddgdd	}t|| | d
di}t dgd
gdd	}t|| d S )N   r   r   )r-   r,   minmaxr   r   r.   r,   r)   )r   r   rW   r    r!   r:   r#   r$   r   r   r   	test_demo  s    r   rB   c                 C   s   t | S r   )rJ   r   r   r   r   r     r   r   c                 C   s>   | j ||d}|r*| |}t|| n|t| ks:J d S )Nr   )r   r   r    r!   rJ   )r   rB   r   r#   r$   r   r   r   (test_apply_map_evaluate_lambdas_the_same  s
    
r   c                 C   s   t t | dd }W d    n1 s.0    Y  t|trRt|t| ksVJ t t | t}W d    n1 s0    Y  t|trt|t| ksJ d S )Nc                 S   s   t | S r   )rn   r   r   r   r   r     r   z+test_agg_evaluate_lambdas.<locals>.<lambda>)r    rD   rE   rW   rL   r   lenrn   )r   r#   r   r   r   test_agg_evaluate_lambdas  s    ,(r   op_namerW   r   c                 C   s   d}|dkrt nd }tj||d" t| |dd }W d    n1 sJ0    Y  t| | d d}t|| tjt |d | dd }W d    n1 s0    Y  t|| d S )	Nzcannot aggregaterW   rU   c                 S   s   t | | d gddgdS Nr1   r   x^2r.   r   r   r   r   r   r     r   z)test_with_nested_series.<locals>.<lambda>r1   )r   r   c                 S   s   t | | d gddgdS r   r   r   r   r   r   r     r   )rE   r    rD   getattrr   r   rW   )r9   r   rZ   warningr#   r$   r   r   r   test_with_nested_series  s    ",r   c                 C   s<   |   }| dddddd ddd d	d
}t|| d S )Ncountmeanstdr   c                 S   s
   |  dS )Ng      ?Zquantiler   r   r   r   r     r   z)test_replicate_describe.<locals>.<lambda>Zmedianc                 S   s
   |  dS )Ng      ?r   r   r   r   r   r     r   r   )r   r   r   r   z25%z50%z75%r   )Zdescriber   r    r!   )r   r$   r#   r   r   r   test_replicate_describe  s    r   c                 C   s>   |  ddg}t|  |  gddg| jd}t|| d S )Nsumr   r+   )rW   r   r   r   r,   r    r!   )r   r#   r$   r   r   r   test_reduce  s    r   z	how, kwdsc                 C   s   t g d}t|| d	i |}|j}||ks2J t|| g dfi |}t dddd}t|| t|| ddddfi |}t|| d S )
N)r0   r1   Nsize)r   r   r         @       @g      ?r   r   )r   )r   r   r   r    r!   )howkwdsr:   r#   r$   r   r   r   test_non_callable_aggregates  s    r   c                 C   sN   t dgd }|jddd dd g| d}t g dg dd	}t|| d S )
Nr^   r   r   c                 S   s   |   S r   r   r   r   r   r   r     r   z3test_series_apply_no_suffix_index.<locals>.<lambda>r   )   r   r   )r   r   r   r   )r   r   r    r!   )r   r:   r#   r$   r   r   r   !test_series_apply_no_suffix_index  s    r   zdti,expl    ,b/ r   r   r   rj   r@   
2020-01-01r`   tsr   awarec                 C   s:   |r|  dj}n| j}t|dd }t|| d S )NUTCc                 S   s   t ddgS )Nr0   r1   r   r   r   r   r   r     r   zCtest_apply_series_on_date_time_index_aware_series.<locals>.<lambda>)r   r.   r   r   r    r   )Zdtir6   r   r.   r#   r   r   r   1test_apply_series_on_date_time_index_aware_series  s
    r   zby_row, expected)Fr0   c                 C   sJ   t tjdtjdtddddd}t |jjdd | d	}t|| d S )
Nr@   rj   r   r   )r   rp   r   c                 S   s   dS r=   r   r   r   r   r   r     r   zCtest_apply_scalar_on_date_time_index_aware_series.<locals>.<lambda>r   )	r   r3   aranger8   r   r.   r   r    assert_equal)r   r$   r   r#   r   r   r   1test_apply_scalar_on_date_time_index_aware_series  s    r   c                 C   s~   ddg}t |}t|jt j| d}tt|| dtjt jt jg}t |}t|}|jt j| d}tt|| d S )Nz00:00:01z00:00:02r   )	rr   Zto_timedeltar   r   r    r!   r3   rA   ZNaT)r   Zlist_of_valid_stringsrO   rT   Zlist_of_stringsr"   r   r   r   test_apply_to_timedelta#  s    

r   z
ops, namesr   r   zhow, kwargsc           	         s   t  fddt||D }d|_|dkr.tnd }dd| d}tj||d& t ||fi |}W d    n1 s~0    Y  t|| d S )	Nc                    s   i | ]\}}|| qS r   r   .0r,   r   r   r   r   
<dictcomp>@  r   z/test_apply_listlike_reducer.<locals>.<dictcomp>r   rW   zusing Series.[r   ]rU   )	r   zipr,   rE   r   r    rD   r   r!   )	r   opsnamesr   rX   r$   warnrZ   r#   r   r   r   test_apply_listlike_reducer1  s    4r   r   r   r   c           	         s   t  fdd| D } j|_|dkr.tnd }d}tj||d& t ||fi |}W d    n1 sp0    Y  t|| d S )Nc                    s   i | ]\}}|| qS r   r   r   r   r   r   r   X  r   z/test_apply_dictlike_reducer.<locals>.<dictcomp>rW   zusing Series.[sum|mean]rU   )r   itemsr,   rE   r    rD   r   r!   )	r   r   r   rX   r   r$   r   rZ   r#   r   r   r   test_apply_dictlike_reducerI  s    4r   r4   r   c                    sj   t jddJ t fdd|D dd}||_ j||d}t|| W d    n1 s\0    Y  d S )Nr&   r'   c                    s   g | ]}| qS r   r   )r   r   r   r   r   
<listcomp>m  r   z3test_apply_listlike_transformer.<locals>.<listcomp>r0   r   r   )r3   r5   r   r   r   r    r   )r   r   r   r   r$   r#   r   r   r   test_apply_listlike_transformera  s
    r   zops, expectedc                 C   s   | S r   r   r   r   r   r   r   v  r   r/   c                 C   s   |   S r   r   r   r   r   r   r   w  r   r   c                 C   s*   t g d}|j| |d}t|| d S Nr/   r   r   r   r    r   )r   r$   r   r"   r#   r   r   r   test_apply_listlike_lambdas  s    	r   c                    sl   t jddL t fdd| D } j|_ j||d}t|| W d    n1 s^0    Y  d S )Nr&   r'   c                    s   i | ]\}}|| qS r   r   r   r   r   r   r     r   z3test_apply_dictlike_transformer.<locals>.<dictcomp>r   )r3   r5   r   r   r,   r   r    r!   )r   r   r   r$   r#   r   r   r   test_apply_dictlike_transformer  s
    r   c                 C   s   | S r   r   r   r   r   r   r     r   r   c                 C   s   |   S r   r   r   r   r   r   r     r   c                 C   s*   t g d}|j| |d}t|| d S r   r   )r   r   r$   r"   r#   r   r   r   test_apply_dictlike_lambda  s    r   c                 C   s   t dtdittddd}|jdd }t dtjtjgddtjgg dgttdd	dttdddd
}t|| d S )Nr   r   r+   c                 S   s"   t t| d tt| d ddS )Nr0   yr+   )r   r   r   r   r   r   r   r     r   z0test_apply_retains_column_name.<locals>.<lambda>              ?)r   r   r   r   )r   r.   )	r   r   r   r   r   r3   rA   r    r   )r   Zdfr#   r$   r   r   r   test_apply_retains_column_name  s    r   c                  C   sF   t ddtgg dd} | t}t tttgg dd}t|| d S )Nr   string)rO   rT   rQ   r   )r   floatr   rn   r   rJ   r    r!   r   r   r   r   test_apply_type  s    
r   c                  C   sV   t g dg dg} | dd }tddgddgd	d
gtjdgd}t|| d S )Nr/   )r^   r   r   r   c                 S   s   t | S r   r   r   r   r   r   r     r   z6test_series_apply_unpack_nested_data.<locals>.<lambda>r   g      @r   g      @r   g      @r   )r   r0   r1   r   )r   r   r   r3   rA   r    r   )r"   r#   r$   r   r   r   $test_series_apply_unpack_nested_data  s    $r   )Lnumpyr3   rd   Zpandasrr   r   r   r   r   r   r   r   Zpandas._testingZ_testingr    Zpandas.tests.apply.commonr	   Zfixturer   r%   r<   r>   r   ZparametrizerF   rN   r[   r_   rg   rw   rx   rz   r}   r   r   rA   r   r   r   r   r   r   r   rJ   r   r   r   r   r   r   r   ZDatetimeIndexrepeatr   r8   r   Zonesr   r   r   r   arrayr   r   r4   r   r   r   r6   r   Zfrom_arraysr   r   r   r   r   r   r   r   r   <module>   s  $	


*


 
&
#


	

			
	
	
	
"

