U
    fª/eâr  ã                   @   sì  d dl mZm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"ej# $dddej%gddej%gg¡d d!„ ƒZ&d"d#„ Z'd$d%„ Z(ej# $d&e¡d'd(„ ƒZ)d)d*„ Z*d+d,„ Z+d-d.„ Z,d/d0„ Z-d1d2„ Z.d3d4„ Z/ej# $d5d6d7g¡d8d9„ ƒZ0ej# $d:ee 1eej2d;d<d=ej3fd>ej3fd?d@dAej3fdBdCej3fdDej3fdEej3fg
¡e 1eej3dFdGdHgƒdIdJdKd?dLdMdNdOdPdQg
¡e 1edR 4¡ ƒdSdTdUd?dLg¡ƒ¡dVdW„ ƒZ5ej# $d:ee 1eej2d;dXeg eg ƒej2d;fdYeg eg ƒej2d;fg¡e 1eej3dFdGdHgƒdXeej3dFdGdZgƒfdYeej3dFdHdZgƒfg¡e 1edR 4¡ ƒdYed[d\d]gƒfg¡ƒ¡d^d_„ ƒZ6d`da„ Z7dbdc„ Z8ddde„ Z9dfdg„ Z:dhdi„ Z;djdk„ Z<dldm„ Z=dndo„ Z>dpdq„ Z?drds„ Z@dtdu„ ZAdvdw„ ZBdxdy„ ZCdzd{„ ZDd|d}„ ZEd~d„ ZFd€d„ ZGd‚dƒ„ ZHd„d…„ ZIej# $d†eJd]ƒej3d‡iej3gdH d‡g feJd]ƒd[dˆidˆgej3gdH  feJeKdHƒƒd d‰id‰gej3gdH  fg¡dŠd‹„ ƒZLej# $dŒedFdGge Md dg¡dŽeejNdFdGggdGd ddd;fejOd‘d’eejNdFdGggd‘d ddd;fg¡ej# $d“d”d•g¡d–d—„ ƒƒZPd˜d™„ ZQdšd›„ ZRdœd„ ZSej# $džejTgdŸgfejTejUgdŸdAgfe VejTg¡dŸgfe VejTejUg¡dŸdAgfg¡ej# $d5d6d7g¡d d¡„ ƒƒZWej# $d¢d£ejTiejTejUd¤œed£ejTiƒeejTejUd¤œƒg¡ej# $d5d6d7g¡d¥d¦„ ƒƒZXej# $džejYgd§gfejZejYgd¨d§gfe VejYg¡d§gfe VejZejYg¡d¨d§gfg¡d©dª„ ƒZ[ej# $d¢d£ejYiejYej\d¤œed£ejYiƒeejYej\d¤œƒg¡d«d¬„ ƒZ]dS )­é    )ÚCounterÚdefaultdict)ÚchainN)Ú	is_number)Ú	DataFrameÚIndexÚ
MultiIndexÚSeriesÚconcatÚisnaÚtimedelta_range)Úseries_transform_kernelsc                  C   s@   t tddddƒ} dd„ }|  |¡ |  |¡ t| ƒ |¡ d S )Nz	1 day 1 sé   Úh)ÚperiodsÚfreqc                 S   s   |   ¡ S ©N)Útotal_seconds©Úx© r   úH/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/apply/test_series_apply.pyÚf   s    z(test_series_map_box_timedelta.<locals>.f)r	   r   ÚmapÚapplyr   Zapplymap)Úserr   r   r   r   Útest_series_map_box_timedelta   s
    

r   c              	   C   sò   t jddB t |  t j¡t  | ¡¡ dd l}t |  |j¡t  | ¡¡ W 5 Q R X tt	dt
g ddd}| dd	„ ¡}t ||¡ ||k	st‚|j|jks t‚|j|jks°t‚|j|jksÀt‚td
ddgt jd}| dd	„ ¡}t ||¡ d S )NÚignore©Úallr   ÚfooÚbar©Úname)Údtyper#   Úindexc                 S   s   | S r   r   r   r   r   r   Ú<lambda>1   ó    ztest_apply.<locals>.<lambda>é   é   é   ©r%   r$   c                 S   s   | S r   r   r   r   r   r   r&   <   r'   )ÚnpÚerrstateÚtmÚassert_series_equalr   ÚsqrtÚmathÚexpr	   Úobjectr   ÚAssertionErrorr%   r$   r#   Úfloat64)Údatetime_seriesr1   ÚsÚrsr   r   r   Ú
test_apply&   s    $r9   c                  C   sf   t ddgƒ} dd„ }|  |¡}|  |¡}t ||¡ t dddgƒ} |  |¡}|  |¡}t ||¡ d S )Nr(   r)   c                 S   s   | | d fS ©Nr(   r   r   r   r   r   r   C   s    z/test_apply_same_length_inference_bug.<locals>.fr*   )r	   r   r   r.   r/   )r7   r   ÚresultÚexpectedr   r   r   Ú$test_apply_same_length_inference_bug@   s    



r=   c                  C   s8   t tj d¡ƒ} dd„ }| j|dd}|jtks4t‚d S )Né
   c                 S   s   | dkr| S t jS )Nr   )r,   Únanr   r   r   r   r   S   s    z(test_apply_dont_convert_dtype.<locals>.fF)Zconvert_dtype)r	   r,   ÚrandomZrandnr   r$   r3   r4   )r7   r   r;   r   r   r   Útest_apply_dont_convert_dtypeP   s    rA   c                 C   s0   dD ]&}|   |¡}t| |ƒƒ }||kst‚qd S )N)ÚsumÚmeanÚminÚmaxÚstd)r   Úgetattrr4   )r6   Úargr;   r<   r   r   r   Útest_with_string_argsZ   s    
rI   c                  C   sD   t dgƒ} | jtjdd}|d ddgks.t‚t|d tƒs@t‚d S )Nzfoo,bar)ú,)Úargsr   r    r!   )r	   r   ÚstrÚsplitr4   Ú
isinstanceÚlist©r7   r;   r   r   r   Útest_apply_argsb   s    
rQ   c                  C   s2   t tjdddƒ} dd„ }|  |¡ |  |¡ d S )Nz1/1/2000r>   )r   c                 S   s   | j | j| jfS r   )ÚhourÚdayÚmonthr   r   r   r   Úfuncn   s    z,test_series_map_box_timestamps.<locals>.func)r	   ÚpdÚ
date_ranger   r   )r   rU   r   r   r   Útest_series_map_box_timestampsj   s    
rX   c                 C   s^   t dddgdddg| d}t ddddg| d	}| |¡}t dddtjg| d	}t ||¡ d S )
NÚcatZdogZrabbitZid1Zid2Zid3)Údatar%   r$   Zid7000)rZ   r$   )r	   r   rV   ZNAr.   r/   )Zany_string_dtypeZser1Zser2r;   r<   r   r   r   Útest_series_map_stringdtypev   s    ý
r[   c                  C   sV  t  d¡t  d¡g} t| ƒ}|jdks*t‚| dd„ ¡}tddgƒ}t ||¡ t jddd	t jddd	g} t| ƒ}|jd
ks‚t‚| dd„ ¡}tddgƒ}t ||¡ t  d¡t  d¡g} t| ƒ}|jdksÒt‚| dd„ ¡}tddgƒ}t ||¡ t j	dddt j	dddg} t| ƒ}|jdks,t‚| dd„ ¡}tddgƒ}t ||¡ d S )Nú
2011-01-01ú
2011-01-02údatetime64[ns]c                 S   s   t | ƒj› d| j› d| j› S ©NÚ_©ÚtypeÚ__name__rS   Útzr   r   r   r   r&   Š   r'   z test_apply_box.<locals>.<lambda>ÚTimestamp_1_NoneÚTimestamp_2_Noneú
US/Eastern©rd   údatetime64[ns, US/Eastern]c                 S   s   t | ƒj› d| j› d| j› S r_   ra   r   r   r   r   r&   ”   r'   úTimestamp_1_US/EasternúTimestamp_2_US/Easternú1 daysú2 daysútimedelta64[ns]c                 S   s   t | ƒj› d| j› S r_   ©rb   rc   Údaysr   r   r   r   r&   œ   r'   ÚTimedelta_1ÚTimedelta_2ÚM©r   ú	Period[M]c                 S   s   t | ƒj› d| j› S r_   ©rb   rc   Zfreqstrr   r   r   r   r&   ¤   r'   ÚPeriod_M©
rV   Ú	Timestampr	   r$   r4   r   r.   r/   Z	TimedeltaZPeriod©Úvalsr7   Úresr2   r   r   r   Útest_apply_box„   s4    þr}   c                  C   sÊ   t jdddd d¡} t| dd}| dd	„ ¡}t jdd
dd d¡}t|dd}t ||¡ | dd	„ ¡}tttdƒƒdg dt	j
d}t ||¡ dd„ }| |¡}tdgd dd}t ||¡ d S )Nr\   r]   ÚHrt   ú
Asia/TokyoÚXXr"   c                 S   s   | t j ¡  S r   ©rV   ÚoffsetsZDayr   r   r   r   r&   ¯   r'   z'test_apply_datetimetz.<locals>.<lambda>ú
2011-01-03c                 S   s   | j S r   ©rR   r   r   r   r   r&   ¸   r'   é   r   ©r#   r$   c                 S   s   t | tjƒst‚t| jƒS r   ©rN   rV   ry   Ú
ValueErrorrL   rd   r   r   r   r   r   ½   s    z test_apply_datetimetz.<locals>.fé   )rV   rW   Útz_localizer	   r   r.   r/   rO   Úranger,   Úint64r   ©Úvaluesr7   r;   Ú
exp_valuesr2   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}| 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 ||¡ |j	t
ks¾t‚d S )NÚABBABCDÚDCBAT©Ú
categoriesZorderedr€   Úabcdefg©r#   r%   c                 S   s   |   ¡ S r   ©Úlowerr   r   r   r   r&   Ê   r'   z(test_apply_categorical.<locals>.<lambda>ÚabbabcdÚdcbac                 S   s   dS ©NÚAr   r   r   r   r   r&   Ó   r'   rœ   é   )rV   ÚCategoricalrO   r	   r   r.   r/   Úassert_categorical_equalrŽ   r$   r3   r4   )rŽ   r   r;   r2   r   r   r   Útest_apply_categoricalÇ   s    r    Úseriesz1-1z1-2c                 C   sR   t | dd}| dd„ ¡}| t¡}t ddtjgdd}| t¡}t ||¡ d S )NÚcategory©r$   c                 S   s   |   d¡d S )Nú-r   )rM   r   r   r   r   r&   Ý   r'   z8test_apply_categorical_with_nan_values.<locals>.<lambda>Ú1)r	   r   Zastyper3   r,   ÚNaNr.   r/   )r¡   r7   r;   r<   r   r   r   Ú&test_apply_categorical_with_nan_valuesÙ   s    

r§   c                  C   s6   t g tjdddtd} |  dd„ ¡}t || ¡ d S )Nz
2018-01-01r   )Ústartr   r+   c                 S   s   | S r   r   r   r   r   r   r&   ç   r'   zEtest_apply_empty_integer_series_with_datetime_index.<locals>.<lambda>)r	   rV   rW   Úintr   r.   r/   rP   r   r   r   Ú3test_apply_empty_integer_series_with_datetime_indexä   s    rª   c              	   C   s  t jdd t  | ¡}t  | ¡}|  t j¡}| ¡ }t ||¡ |  t jg¡}| ¡  ¡ }dg|_	t 
||¡ |  dg¡}t 
||¡ t||gdd}ddg|_	|  t jt jg¡}t 
||¡ t||gdd}ddg|_	| ¡  d	¡}|  t jt jd
œ¡}t | |¡|¡ W 5 Q R X d S )Nr   r   r0   r(   ©ZaxisÚabsoluter    r!   r¡   )r    r!   )r,   r-   r0   Úabsr   Úcopyr.   r/   Zto_frameÚcolumnsÚassert_frame_equalr
   ZunstackÚrenameZreindex_like)Ústring_seriesZf_sqrtZf_absr;   r<   r   r   r   Útest_transformë   s*    



r³   Úopc                 C   s  | dkr&|j  tjjt| › dd¡ | dkr>t | › d¡ tdtg ƒ}| 	dg¡}| 	| dg¡}t
 ||¡ | 	ddi¡}| 	| dd	œ¡}t
 ||¡ | 	ddgi¡}| 	| gdgd	œ¡}t
 ||¡ | 	dg| gd	œ¡}| 	| dg| gd	œ¡}t
 ||¡ d S )
N)ZffillZbfillÚpadZbackfillÚshiftz is successful on any dtype)ZraisesÚreason)ZrankZfillnaz" doesn't raise TypeError on objectr*   r¶   ÚB©rœ   r¸   )ÚnodeZ
add_markerÚpytestÚmarkZxfailr4   Úskipr	   r3   Ú	transformr.   Úassert_equal)r´   Úrequestr   r<   r;   r   r   r   Útest_transform_partial_failure  s,     ÿÿrÁ   c               	   C   sF  d} dd„ }dd„ }t dtg ƒ}| |g¡}tjt| d | ||g¡}W 5 Q R X t ||¡ | d|i¡}tjt| d | ||d	œ¡}W 5 Q R X t ||¡ | d|gi¡}tjt| d | |g|gd	œ¡}W 5 Q R X t ||¡ | |g|gd	œ¡}tjt| d
d | ||g|gd	œ¡}W 5 Q R X t ||¡ d S )Nz>.*did not transform successfully and did not raise a TypeErrorc                 S   s   | S r   r   r   r   r   r   Únoop6  s    z7test_transform_partial_failure_valueerror.<locals>.noopc                 S   s   t ‚d S r   )rˆ   )r`   r   r   r   Ú
raising_op9  s    z=test_transform_partial_failure_valueerror.<locals>.raising_opr*   ©Úmatchr¸   r¹   F)rÅ   Zcheck_stacklevel)r	   r3   r¾   r.   Úassert_produces_warningÚFutureWarningr¿   )rÅ   rÂ   rÃ   r   r<   r;   r   r   r   Ú)test_transform_partial_failure_valueerror2  s(     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#   rD   rE   r   r   )r%   r#   r    )r	   r‹   Úaggr.   r/   ©r7   r;   r<   r   r   r   Ú	test_demoS  s    rÌ   c                 C   sL   |   dd„ ¡}|  dd„ ¡}t ||¡ |   t¡}|  t¡}t ||¡ d S )Nc                 S   s   t | ƒS r   ©rL   r   r   r   r   r&   c  r'   z:test_agg_apply_evaluate_lambdas_the_same.<locals>.<lambda>c                 S   s   t | ƒS r   rÍ   r   r   r   r   r&   d  r'   )r   rÊ   r.   r/   rL   ©r²   r;   r<   r   r   r   Ú(test_agg_apply_evaluate_lambdas_the_same`  s    

rÏ   c                 C   sJ   |   dd„ ¡}t| | d dœƒ}t ||¡ |  dd„ ¡}t ||¡ d S )Nc                 S   s   t | | d gddgdS ©Nr)   r   úx^2©r%   ©r	   r   r   r   r   r&   o  r'   z)test_with_nested_series.<locals>.<lambda>r)   )r   rÑ   c                 S   s   t | | d gddgdS rÐ   rÓ   r   r   r   r   r&   s  r'   )r   r   r.   r°   rÊ   )r6   r;   r<   r   r   r   Útest_with_nested_seriesl  s
    rÔ   c                 C   s<   |   ¡ }|  dddddd„ ddd„ d	d
œ¡}t ||¡ d S )NÚcountrC   rF   rD   c                 S   s
   |   d¡S )Ng      Ð?©Zquantiler   r   r   r   r&   €  r'   z)test_replicate_describe.<locals>.<lambda>Úmedianc                 S   s
   |   d¡S )Ng      è?rÖ   r   r   r   r   r&   ‚  r'   rE   )rÕ   rC   rF   rD   z25%z50%z75%rE   )Zdescriber   r.   r/   )r²   r<   r;   r   r   r   Útest_replicate_describew  s    øÿrØ   c                 C   s>   |   ddg¡}t|  ¡ |  ¡ gddg| jd}t ||¡ d S )NrB   rC   r"   )rÊ   r	   rB   rC   r#   r.   r/   rÎ   r   r   r   Útest_reduce‰  s    ýrÙ   ÚhowrÊ   r   c                 C   sb   t ddd gƒ}t|| ƒdƒ}|j}||ks.t‚t|| ƒdddgƒ}t dddd	œƒ}t ||¡ d S )
Nr(   r)   ÚsizerÕ   rC   ç      @ç       @ç      ø?)rÛ   rÕ   rC   )r	   rG   rÛ   r4   r.   r/   )rÚ   r7   r;   r<   r   r   r   Útest_non_callable_aggregates”  s    rß   zseries, func, expectedr£   )rB   r   rE   rD   )r   T)ÚanyFrC   )Úprodr(   rF   Úvarr×   r(   r)   r*   )rB   rÉ   )rE   r*   )rD   r(   )rà   T)rC   r)   )rá   rÉ   )rF   r(   )râ   r(   )r×   r)   za b c)rB   Úabc)rE   Úc)rD   Úac                 C   s8   |   |¡}t|ƒr(tj||dds4t‚n||ks4t‚d S )NT)Z	equal_nan)rÊ   r   r,   Úiscloser4   ©r¡   rU   r<   r;   r   r   r   Útest_agg_cython_table¥  s    1
rè   ZcumprodZcumsumrÉ   rå   Úabrã   c                 C   s   |   |¡}t ||¡ d S r   )rÊ   r.   r/   rç   r   r   r   Útest_agg_cython_table_transformÝ  s    
rê   c                  C   sN   t dgd ƒ} |  ddd„ dd„ g¡}t dddgdddgd}t ||¡ d S )	Né   r*   rB   c                 S   s   |   ¡ S r   )rB   r   r   r   r   r&   þ  r'   z3test_series_apply_no_suffix_index.<locals>.<lambda>é   z<lambda>rÒ   )r	   r   r.   r/   rË   r   r   r   Ú!test_series_apply_no_suffix_indexû  s    rí   c              	   C   s’  t  ¡ \}}t|d |d d}t|d d d… |d d d… d}| |¡}| ¡ D ]\}}||||  ksVt‚qV| | ¡ ¡}| ¡ D ]\}}||||  ksŠt‚qŠ|  dd„ ¡}t  || d ¡ td	dd
dgƒ}	tddddgdd}
tddddgƒ}tdddtj	gdd}t  |	 |
¡|¡ tdddtj	gƒ}t  |	 |¡|¡ tddddgƒ}	td	dd
dgt
 ddddg¡d}
td	dd
dgtddddgƒd}ttj	d	dd
gƒ}t  |	 |
¡|¡ ttj	d	dd
gƒ}t  |	 |¡|¡ tddddgƒ}	tddddgdt
 ddddg¡d}
tddddgtddddgƒd}tt
jtj	dddgddddgdƒ}t  |	 |
¡|¡ ttj	dddgƒ}t  |	 |¡|¡ d S )Nr¸   ÚCrÒ   rë   ÚDc                 S   s   | d S ©Nr)   r   r   r   r   r   r&     r'   ztest_map.<locals>.<lambda>r)   r(   r*   ZevenZoddr¢   r£   rå   Úbrä   ÚdÚeÚE)r$   r%   )r”   )r.   ZgetMixedTypeDictr	   r   Úitemsr4   Úto_dictr/   r,   r?   rV   ZCategoricalIndexr   rž   )r6   r%   rZ   ÚsourceÚtargetÚmergedÚkÚvr;   rå   rñ   rä   r2   r   r   r   Útest_map  sL    $
" 
ý ÿrü   c                 C   sF   t | tƒrt d¡ t| ƒ}| i ¡}ttj|jd}t	 
||¡ d S )Nz8Initializing a Series from a MultiIndex is not supportedrÒ   )rN   r   r»   r½   r	   r   r,   r?   r%   r.   r/   )r%   r7   r;   r<   r   r   r   Útest_map_empty<  s    


rý   c                  C   sP   t dddgdddgd} |  ddd	œ¡}t dddgdddgd}t ||¡ d S )
NTFr(   r)   r*   rÒ   r    r!   )TF)r	   r   r.   r/   rË   r   r   r   Útest_map_compatG  s    rþ   c                  C   s„   t dddddœƒ} t dddd	œƒ}| jtjks2t‚t|jjtjƒsFt‚|  |¡}|jtjks`t‚t	|d
 ƒspt‚t	|d ƒr€t‚d S )Ng      ð?rÝ   rÜ   rë   )rå   rñ   rä   rò   é   é   é!   )r(   r)   r*   rò   rä   )
r	   r$   r,   Zfloat_r4   Ú
issubclassrb   Úintegerr   r   )ÚleftÚrightrù   r   r   r   Útest_map_intO  s    
r  c                  C   s2   t tdƒƒ} |  dd„ ¡}t|jjtjƒs.t‚d S )Nr*   c                 S   s   t  | dkdd¡S )Nr   r(   )r,   Úwherer   r   r   r   r&   ^  r'   z)test_map_type_inference.<locals>.<lambda>)	r	   r‹   r   r  r$   rb   r,   r  r4   )r7   Ús2r   r   r   Útest_map_type_inference\  s    r	  c                    sD   ddl m‰  |  ‡ fdd„¡}|jtjks.t‚t|d ˆ ƒs@t‚d S )Nr   ©ÚDecimalc                    s   ˆ t | ƒƒS r   rÍ   r   r
  r   r   r&   e  r'   z"test_map_decimal.<locals>.<lambda>)Údecimalr  r   r$   r,   Zobject_r4   rN   )r²   r;   r   r
  r   Útest_map_decimalb  s    r  c                  C   s@   t dtjdtjdgƒ} | jdd„ dd}| d }t ||¡ d S )	NrÞ   r*   r   c                 S   s   | d S rð   r   r   r   r   r   r&   m  r'   z'test_map_na_exclusion.<locals>.<lambda>r   )Z	na_actionr)   ©r	   r,   r?   r   r.   r/   )r7   r;   r2   r   r   r   Útest_map_na_exclusionj  s    r  c                  C   sj   t dddddgiƒ} dddddœ}| d  |¡| d	< tddddg| jd
| d< tj| d	 | d dd dS )zÄ
    Due to new MultiIndex-ing behaviour in v0.14.0,
    dicts with tuple keys passed to map were being
    converted to a multi-index, preventing tuple values
    from being mapped properly.
    rå   ©r(   ©r)   ©r*   rë   ©r   rÉ   rœ   r¸   )r  r  r  r  ÚlabelsrÒ   Zexpected_labelsF)Zcheck_namesN)r   r   r	   r%   r.   r/   )ZdfZlabel_mappingsr   r   r   Útest_map_dict_with_tuple_keysr  s
    r  c                  C   sh   t dddgdddgd} tƒ }d|d< |d  d7  < |  |¡}t d	ddgdddgd}t ||¡ d S )
Nrå   rñ   rä   r(   r)   r*   rÒ   r   r   )r	   r   r   r.   r/   )r7   Úcounterr;   r<   r   r   r   Útest_map_counterƒ  s    
r  c                  C   s^   t dddgdddgd} tdd	„ ƒ}d
|d< |  |¡}t d
ddgdddgd}t ||¡ d S )Nr(   r)   r*   rå   rñ   rä   rÒ   c                   S   s   dS )NÚblankr   r   r   r   r   r&     r'   z&test_map_defaultdict.<locals>.<lambda>Ústuffr  )r	   r   r   r.   r/   )r7   Zdefault_dictr;   r<   r   r   r   Útest_map_defaultdict  s    
r  c                  C   sF   t ddtjgƒ} t dddgƒ}|  ddddtjdi¡}t ||¡ d S )Nr(   r)   rå   rñ   rä   r  )r7   r<   r;   r   r   r   Útest_map_dict_na_key–  s    r  c                  C   sR   G dd„ dt ƒ} tdddgƒ}| ddiƒ}| |¡}tdddgƒ}t ||¡ dS )	zy
    Test Series.map with a dictionary subclass that defines __missing__,
    i.e. sets a default value (GH #15999).
    c                   @   s   e Zd Zdd„ ZdS )z<test_map_dict_subclass_with_missing.<locals>.DictWithMissingc                 S   s   dS ©NÚmissingr   )ÚselfÚkeyr   r   r   Ú__missing__¦  s    zHtest_map_dict_subclass_with_missing.<locals>.DictWithMissing.__missing__N©rc   Ú
__module__Ú__qualname__r   r   r   r   r   ÚDictWithMissing¥  s   r$  r(   r)   r*   Úthreer  N)Údictr	   r   r.   r/   )r$  r7   Ú
dictionaryr;   r<   r   r   r   Ú#test_map_dict_subclass_with_missingŸ  s    
r(  c                  C   sV   G dd„ dt ƒ} tdddgƒ}| ddiƒ}| |¡}ttjtjdgƒ}t ||¡ d S )Nc                   @   s   e Zd ZdS )zBtest_map_dict_subclass_without_missing.<locals>.DictWithoutMissingN)rc   r"  r#  r   r   r   r   ÚDictWithoutMissing±  s   r)  r(   r)   r*   r%  )r&  r	   r   r,   r?   r.   r/   )r)  r7   r'  r;   r<   r   r   r   Ú&test_map_dict_subclass_without_missing°  s    
r*  c                 C   sF   t dddgƒ}| ddiƒ}| |¡}t tjtjdgƒ}t ||¡ d S )Nr(   r)   r*   r%  ©r	   r   r,   r?   r.   r/   )Únon_dict_mapping_subclassr7   Únot_a_dictionaryr;   r<   r   r   r   Útest_map_abc_mapping»  s
    
r.  c                 C   sV   G dd„ d| ƒ}t dddgƒ}|ddiƒ}| |¡}t tjtjdgƒ}t ||¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zDtest_map_abc_mapping_with_missing.<locals>.NonDictMappingWithMissingc                 S   s   dS r  r   )r  r   r   r   r   É  s    zPtest_map_abc_mapping_with_missing.<locals>.NonDictMappingWithMissing.__missing__Nr!  r   r   r   r   ÚNonDictMappingWithMissingÈ  s   r/  r(   r)   r*   r%  r+  )r,  r/  r7   r-  r;   r<   r   r   r   Ú!test_map_abc_mapping_with_missingÅ  s    
r0  c                  C   sV  t  d¡t  d¡g} t| ƒ}|jdks*t‚| dd„ ¡}tddgƒ}t ||¡ t jddd	t jddd	g} t| ƒ}|jd
ks‚t‚| dd„ ¡}tddgƒ}t ||¡ t  d¡t  d¡g} t| ƒ}|jdksÒt‚| dd„ ¡}tddgƒ}t ||¡ t j	dddt j	dddg} t| ƒ}|jdks,t‚| dd„ ¡}tddgƒ}t ||¡ d S )Nr\   r]   r^   c                 S   s   t | ƒj› d| j› d| j› S r_   ra   r   r   r   r   r&   Ú  r'   ztest_map_box.<locals>.<lambda>re   rf   rg   rh   ri   c                 S   s   t | ƒj› d| j› d| j› S r_   ra   r   r   r   r   r&   ä  r'   rj   rk   rl   rm   rn   c                 S   s   t | ƒj› d| j› S r_   ro   r   r   r   r   r&   ì  r'   rq   rr   rs   rt   ru   c                 S   s   t | ƒj› d| j› S r_   rv   r   r   r   r   r&   ô  r'   rw   rx   rz   r   r   r   Útest_map_boxÕ  s4    þr1  c                  C   sÀ   t jtdƒtdƒdd} t| dtdƒd}| dd	„ ¡}t jtd
ƒtdƒdd}t|dtdƒd}t ||¡ t |j|¡ | dd	„ ¡}tdgd dtdƒd}t ||¡ |j	t
ks¼t‚d S )Nr‘   r’   Tr“   r€   r•   r–   c                 S   s   |   ¡ S r   r—   r   r   r   r   r&   ý  r'   z&test_map_categorical.<locals>.<lambda>r™   rš   c                 S   s   dS r›   r   r   r   r   r   r&     r'   rœ   r   )rV   rž   rO   r	   r   r.   r/   rŸ   rŽ   r$   r3   r4   )rŽ   r7   r;   r   r2   r   r   r   Útest_map_categoricalù  s    r2  c                  C   sÊ   t jdddd d¡} t| dd}| dd	„ ¡}t jdd
dd d¡}t|dd}t ||¡ | dd	„ ¡}tttdƒƒdg dt	j
d}t ||¡ dd„ }| |¡}tdgd dd}t ||¡ d S )Nr\   r]   r~   rt   r   r€   r"   c                 S   s   | t j ¡  S r   r   r   r   r   r   r&     r'   z%test_map_datetimetz.<locals>.<lambda>rƒ   c                 S   s   | j S r   r„   r   r   r   r   r&     r'   r…   r   r†   c                 S   s   t | tjƒst‚t| jƒS r   r‡   r   r   r   r   r     s    ztest_map_datetimetz.<locals>.fr‰   )rV   rW   rŠ   r	   r   r.   r/   rO   r‹   r,   rŒ   r   r   r   r   Útest_map_datetimetz	  s"    ÿÿ
r3  zvals,mapping,expznot NaNza letteré*   c                 C   s.   t | tjg ƒ}| |¡}t |t |ƒ¡ d S r   r  )r{   Úmappingr2   r7   r;   r   r   r   Útest_map_missing_mixed(  s    

r6  zdti,expl    ,b/ rÒ   r«   rŒ   é   ©ZnperÚawareTFc                 C   s:   |r|   d¡j}n| j}t|ƒ dd„ ¡}t ||¡ d S )NÚUTCc                 S   s   t ddgƒS )Nr(   r)   rÓ   r   r   r   r   r&   M  r'   zCtest_apply_series_on_date_time_index_aware_series.<locals>.<lambda>)rŠ   r%   r	   r   r.   r°   )Zdtir2   r9  r%   r;   r   r   r   Ú1test_apply_series_on_date_time_index_aware_series8  s
    r;  c                  C   sD   t jdd d¡} t| jƒ dd„ ¡}t  |tt d¡dd¡ d S )Nr7  r8  r:  c                 S   s   dS r:   r   r   r   r   r   r&   U  r'   zCtest_apply_scaler_on_date_time_index_aware_series.<locals>.<lambda>rŒ   r£   )	r.   ÚmakeTimeSeriesrŠ   r	   r%   r   r/   r,   Zones)r¡   r;   r   r   r   Ú1test_apply_scaler_on_date_time_index_aware_seriesQ  s    r=  c                  C   s2   t dƒ} |  dd„ ¡ ¡ }ddi}||ks.t‚d S )NgUUUUUUÕ?c                 S   s   t | ƒS r   rÍ   )Úvalr   r   r   r&   \  r'   z4test_map_float_to_string_precision.<locals>.<lambda>r   z0.3333333333333333)r	   r   rö   r4   )r   r;   r<   r   r   r   Ú"test_map_float_to_string_precisionY  s    r?  c               	   C   sp   ddg} t  | ¡}t| ƒ t j¡}dtjt jt jg}t  |¡}tjt	dd t|ƒ}W 5 Q R X | t j¡}d S )Nz00:00:01z00:00:02zInferring timedelta64rÄ   )
rV   Zto_timedeltar	   r   r,   r?   ZNaTr.   rÆ   rÇ   )Zlist_of_valid_stringsrå   rñ   Zlist_of_stringsr   r   r   r   Útest_apply_to_timedeltaa  s    

r@  z
ops, namesrB   c                    s@   t ‡ fdd„t||ƒD ƒƒ}d|_tˆ |ƒ|ƒ}t ||¡ d S )Nc                    s   i | ]\}}||ˆ ƒ“qS r   r   ©Ú.0r#   r´   ©r²   r   r   Ú
<dictcomp>  s      z/test_apply_listlike_reducer.<locals>.<dictcomp>r¡   )r	   Úzipr#   rG   r.   r/   )r²   ÚopsÚnamesrÚ   r<   r;   r   rC  r   Útest_apply_listlike_reducers  s    rH  rF  rœ   r¹   c                    s@   t ‡ fdd„| ¡ D ƒƒ}ˆ j|_tˆ |ƒ|ƒ}t ||¡ d S )Nc                    s   i | ]\}}||ˆ ƒ“qS r   r   rA  rC  r   r   rD  ‘  s      z/test_apply_dictlike_reducer.<locals>.<dictcomp>)r	   rõ   r#   rG   r.   r/   )r²   rF  rÚ   r<   r;   r   rC  r   Útest_apply_dictlike_reducer…  s    rI  r0   r¬   c              	      sR   t jdd< t‡ fdd„|D ƒdd}||_ˆ  |¡}t ||¡ W 5 Q R X d S )Nr   r   c                    s   g | ]}|ˆ ƒ‘qS r   r   )rB  r´   rC  r   r   Ú
<listcomp>£  s     z3test_apply_listlike_transformer.<locals>.<listcomp>r(   r«   )r,   r-   r
   r¯   r   r.   r°   )r²   rF  rG  r<   r;   r   rC  r   Útest_apply_listlike_transformer—  s
    
rK  c              	      sT   t jdd> t‡ fdd„| ¡ D ƒƒ}ˆ j|_ˆ  |¡}t ||¡ W 5 Q R X d S )Nr   r   c                    s   i | ]\}}||ˆ ƒ“qS r   r   rA  rC  r   r   rD  µ  s      z3test_apply_dictlike_transformer.<locals>.<dictcomp>)r,   r-   r
   rõ   r#   r   r.   r/   )r²   rF  r<   r;   r   rC  r   Útest_apply_dictlike_transformer©  s
    
rL  )^Úcollectionsr   r   Ú	itertoolsr   Znumpyr,   r»   Zpandas.core.dtypes.commonr   ZpandasrV   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr.   Zpandas.tests.apply.commonr   r   r9   r=   rA   rI   rQ   rX   r[   r}   r   r    r¼   Zparametrizer¦   r§   rª   r³   rÁ   rÈ   rÌ   rÏ   rÔ   rØ   rÙ   rß   Zget_cython_table_paramsr5   r?   rM   rè   rê   rí   rü   rý   rþ   r  r	  r  r  r  r  r  r  r(  r*  r.  r0  r1  r2  r3  rO   r‹   r6  ZDatetimeIndexÚrepeatr<  r;  r=  r?  r@  rB   rC   ÚarrayrH  rI  r0   r­   rK  r2   rL  r   r   r   r   Ú<module>   sd  $	
% 

'
!

öþöþ
ûþáþ-

þþþþ
 ÿñþ
	8
		
$ "ýþ
þ
þûþüþ	üþ	üþ	
	üþ	