a
    ~¤bB  ã                   @   s
  d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	Z
ddlZddlZzddlmZ ddlmZ W n   d\ZZY n0 zddlZW n   dZY n0 eejjdkdƒZeedu d	ƒZdd
lmZ ddlmZ ddlmZ G dd„ dej ƒZ!G dd„ deƒZ"dS )z
Unit tests for dim transforms
é    )ÚdivisionN)ÚOrderedDict)ÚskipIf)NNé   zRequires Python>2zxarray not available)ÚDataset)ÚComparisonTestCase)Údimc                   @   s   e Zd ZejddZdS )ÚParamsr   ©ÚdefaultN)Ú__name__Ú
__module__Ú__qualname__ÚparamÚNumberÚa© r   r   úAlib/python3.9/site-packages/holoviews/tests/util/testtransform.pyr	   $   s   r	   c                   @   s,  e Zd Zdd„ Zd…dd„Zd†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d&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Z d>d?„ Z!d@dA„ Z"dBdC„ Z#dDdE„ Z$dFdG„ Z%dHdI„ Z&dJdK„ Z'dLdM„ Z(dNdO„ Z)dPdQ„ Z*dRdS„ Z+dTdU„ Z,dVdW„ Z-dXdY„ Z.dZd[„ Z/d\d]„ Z0d^d_„ Z1d`da„ Z2dbdc„ Z3ddde„ Z4dfdg„ Z5dhdi„ Z6djdk„ Z7dldm„ Z8dndo„ Z9dpdq„ Z:drds„ Z;e<dtdu„ ƒZ=e<dvdw„ ƒZ>e<dxdy„ ƒZ?e<e@dzd{„ ƒƒZAd|d}„ ZBd~d„ ZCd€d„ ZDd‚dƒ„ ZEd„S )‡ÚTestDimTransformsc                 C   s`  t  t dd¡¡| _t  t dd¡d ¡| _t  | j ¡| _t  g d¢¡| _| jdk| _t	| j| j| j| j| jfg d¢ƒ| _
td ur¦tj| j
jdd}| j
j|d	| _td u r²d S t dd
d¡}t ddd¡}t d¡ dd¡}tj|td|fd|fgƒddgd}t	|dgd| _td ur\t |¡}tj|td|fd|fgƒddgd}t	|dgd| _d S )Né   é   ç      $@)
ÚAÚBÚCr   r   r   r   r   r   r   r   )ÚintÚfloatÚnegativeÚ
categoriesÚbooleansr   ©Znpartitions)Údataé>   é   é   éd   é   é   ÚxÚy)r!   ZcoordsZdimsÚz)Zvdims)ÚpdÚSeriesÚnpZarangeÚlinear_intsÚlinear_floatsr   Ú	repeatingr   r   ÚdatasetÚddÚfrom_pandasr!   ZcloneÚdataset_daskÚxrZreshapeÚ	DataArrayr   Údataset_xarrayÚdaÚ
from_arrayÚdataset_xarray_dask)ÚselfZddfr(   r)   ÚarrayZdarrayZ
dask_arrayZdask_dar   r   r   ÚsetUp+   sF    ÿÿýý

ýzTestDimTransforms.setUpFc                 C   st  t  |¡rz|  |j| jdd|¡ |  |j| jdd|¡ td u rFd S |  |j| jdd|¡ |  |j| jdd|¡ d S |  |tj	¡ |s¤t j
 | | j¡|j¡ tj
j|j| jdd|dd |sÎtd u rÒd S tj|dd}|st |j| jdd ¡ |j ¡ ¡ tj|j| jddd|dd |sLt j
 |j| jdd|j ¡ ¡ tj
j|j| jddd| ¡ dd d S )	NF©Ú
keep_indexT)Zcheck_namesr   r    ©Úcompute©r?   rA   )r-   ÚisscalarÚassertEqualÚapplyr1   r2   r4   ÚassertIsInstancer+   r,   ÚtestingÚassert_equalÚvaluesZassert_series_equalr3   r8   Ú	assert_eqrA   )r;   ÚexprÚexpectedÚ	skip_daskÚskip_no_indexÚexpected_daskr   r   r   Úassert_applyT   sd    
ÿÿÿÿ
þýþýþýzTestDimTransforms.assert_applyc                 C   s8  dd l }t |¡rF|  |j| jdd|¡ |  |j| jdd|¡ d S |  ||j¡ |sptj 	| | j¡|j
¡ |j 	|j| jdd|¡ |s–td u ršd S t |j
¡}| ¡ }||_|sÒt |j| jdd|j¡ |j 	|j| jddd|¡ |stj 	|j| jdd|j ¡ ¡ |j 	|j| jddd| ¡ ¡ d S )Nr   Fr>   Tr@   rB   )Úxarrayr-   rC   rD   rE   r7   rF   r6   rG   rH   rI   r8   r9   Úcopyr!   rJ   r:   rA   )r;   rK   rL   rM   rN   r5   Zexpected_darO   r   r   r   Úassert_apply_xarray›   sT    
ÿÿ
þþþþþþz%TestDimTransforms.assert_apply_xarrayc                 C   s   t tdƒƒ}|  || j¡ d S ©Nr   )Úabsr   rP   r/   ©r;   rK   r   r   r   Útest_abs_transformÙ   s    z$TestDimTransforms.test_abs_transformc                 C   s   t dƒ }|  || j¡ d S rT   ©r   rP   r/   rV   r   r   r   Útest_neg_transformÝ   s    
z$TestDimTransforms.test_neg_transformc                 C   s   t dƒ }|  || j ¡ d S )Nr   )r   rP   r   rV   r   r   r   Útest_inv_transformá   s    
z$TestDimTransforms.test_inv_transformc                 C   s"   t dƒd }|  || jd ¡ d S )Nr   r   rX   rV   r   r   r   Útest_add_transformç   s    z$TestDimTransforms.test_add_transformc                 C   s   t dƒd }|  || j¡ d S )Nr   r   rX   rV   r   r   r   Útest_div_transformë   s    z$TestDimTransforms.test_div_transformc                 C   s"   t dƒd }|  || jd ¡ d S ©Nr   r   ©r   rP   r.   rV   r   r   r   Útest_floor_div_transformï   s    z*TestDimTransforms.test_floor_div_transformc                 C   s"   t dƒd }|  || jd ¡ d S r]   r^   rV   r   r   r   Útest_mod_transformó   s    z$TestDimTransforms.test_mod_transformc                 C   s$   t dƒd }|  || j d¡¡ d S )Nr   r   Úfloat64©r   rP   r.   ÚastyperV   r   r   r   Útest_mul_transform÷   s    z$TestDimTransforms.test_mul_transformc                 C   s"   t dƒd }|  || jd ¡ d S r]   r^   rV   r   r   r   Útest_pow_transformû   s    z$TestDimTransforms.test_pow_transformc                 C   s"   t dƒd }|  || jd ¡ d S )Nr   é
   r^   rV   r   r   r   Útest_sub_transformÿ   s    z$TestDimTransforms.test_sub_transformc                 C   s"   dt dƒ }|  |d| j ¡ d S )Nr   r   rX   rV   r   r   r   Útest_radd_transform  s    z%TestDimTransforms.test_radd_transformc                 C   s"   dt dƒ }|  |d| j ¡ d S )Nr   r   r^   rV   r   r   r   Útest_rdiv_transform	  s    z%TestDimTransforms.test_rdiv_transformc                 C   s"   dt dƒ }|  |d| j ¡ d S ©Nr   r   r^   rV   r   r   r   Útest_rfloor_div_transform  s    z+TestDimTransforms.test_rfloor_div_transformc                 C   s"   dt dƒ }|  |d| j ¡ d S rj   r^   rV   r   r   r   Útest_rmod_transform  s    z%TestDimTransforms.test_rmod_transformc                 C   s$   dt dƒ }|  || j d¡¡ d S )Nr   r   ra   rb   rV   r   r   r   Útest_rmul_transform  s    z%TestDimTransforms.test_rmul_transformc                 C   s"   dt dƒ }|  |d| j ¡ d S )Nrf   r   r^   rV   r   r   r   Útest_rsub_transform  s    z%TestDimTransforms.test_rsub_transformc                 C   s&   t  tdƒ¡}|  |t  | j¡¡ d S ©Nr   )r-   Zsinr   rP   r/   rV   r   r   r   Útest_ufunc_transform  s    z&TestDimTransforms.test_ufunc_transformc                 C   s&   t dƒ d¡}|  || j d¡¡ d S )Nr   ra   )r   rc   rP   r.   rV   r   r   r   Útest_astype_transform#  s    z'TestDimTransforms.test_astype_transformc                 C   s"   t dƒ ¡ }|  || j ¡ ¡ d S ro   )r   ZcumsumrP   r/   rV   r   r   r   Útest_cumsum_transform'  s    z'TestDimTransforms.test_cumsum_transformc                 C   s"   t dƒ ¡ }|  || j ¡ ¡ d S ro   )r   ÚmaxrP   r/   rV   r   r   r   Útest_max_transform+  s    z$TestDimTransforms.test_max_transformc                 C   s"   t dƒ ¡ }|  || j ¡ ¡ d S ro   )r   ÚminrP   r/   rV   r   r   r   Útest_min_transform/  s    z$TestDimTransforms.test_min_transformc                 C   s"   t dƒ ¡ }|  || j ¡ ¡ d S ro   )r   ÚroundrP   r/   rV   r   r   r   Útest_round_transform3  s    z&TestDimTransforms.test_round_transformc                 C   s"   t dƒ ¡ }|  || j ¡ ¡ d S ro   )r   ÚsumrP   r/   rV   r   r   r   Útest_sum_transform7  s    z$TestDimTransforms.test_sum_transformc                 C   s*   t dƒjdd}|  || jjdd¡ d S ©Nr   r   )Zddof)r   ZstdrP   r/   rV   r   r   r   Útest_std_transform;  s    z$TestDimTransforms.test_std_transformc                 C   s*   t dƒjdd}|  || jjdd¡ d S r{   )r   ÚvarrP   r/   rV   r   r   r   Útest_var_transform?  s    z$TestDimTransforms.test_var_transformc                 C   s$   t dƒ ¡ }|  |t | j¡¡ d S ro   )r   ÚlogrP   r-   r/   rV   r   r   r   Útest_log_transformC  s    z$TestDimTransforms.test_log_transformc                 C   s$   t dƒ ¡ }|  |t | j¡¡ d S ro   )r   Zlog10rP   r-   r/   rV   r   r   r   Útest_log10_transformG  s    z&TestDimTransforms.test_log10_transformc                 C   s(   t dƒ ¡ }| j|| j t¡dd d S )Nr   T©rM   )r   ÚstrrP   r.   rc   rV   r   r   r   Útest_str_astypeM  s    z!TestDimTransforms.test_str_astypec                 C   s&   t dƒ ¡ }|  || jd d ¡ d S )Nr   r   g      "@)r   ÚnormrP   r.   rV   r   r   r   Útest_norm_transformQ  s    z%TestDimTransforms.test_norm_transformc                 C   s$   t dƒjd }|  || jd ¡ d S ©Nr   r   ©r   ZilocrP   r.   rV   r   r   r   Útest_iloc_transform_intU  s    z)TestDimTransforms.test_iloc_transform_intc                 C   s0   t dƒjdd… }| j|| jdd… dd d S )Nr   r   r#   Tr‚   rˆ   rV   r   r   r   Útest_iloc_transform_sliceY  s    z+TestDimTransforms.test_iloc_transform_slicec                 C   s0   t dƒjg d¢ }| j|| jg d¢ dd d S )Nr   )r   r#   r&   Tr‚   rˆ   rV   r   r   r   Útest_iloc_transform_list]  s    z*TestDimTransforms.test_iloc_transform_listc                 C   s0   t dƒ g d¢¡}t g d¢¡}|  ||¡ d S )Nr   ©r   r&   rf   )
ç      @r   r   r   r   ç      @rŽ   rŽ   rŽ   rŽ   ©r   Úbinr+   r,   rP   ©r;   rK   rL   r   r   r   Útest_bin_transforma  s
    ÿz$TestDimTransforms.test_bin_transformc                 C   s6   t dƒ g d¢ddg¡}t g d¢¡}|  ||¡ d S )Nr   rŒ   r   r   )
r   r   r   r   r   r   r   r   r   r   r   r‘   r   r   r   Útest_bin_transform_with_labelsh  s
    ÿz0TestDimTransforms.test_bin_transform_with_labelsc                 C   s>   t dƒ g d¢¡}t g d¢d dg ¡}| j||dd d S )Nr   ©ÚcircleÚsquareÚtriangler#   r•   Tr‚   ©r   Z
categorizer+   r,   rP   r‘   r   r   r   Útest_categorize_transform_listo  s
    ÿz0TestDimTransforms.test_categorize_transform_listc                 C   s>   t dƒ ddddœ¡}t g d¢d dg ¡}|  ||¡ d S )Nr   r•   r–   r—   )r   r   r   r”   r#   r˜   r‘   r   r   r   Útest_categorize_transform_dictw  s    
ÿÿz0TestDimTransforms.test_categorize_transform_dictc                 C   s@   t dƒjdddœdd}t g d¢d dg ¡}|  ||¡ d S )	Nr   r•   r–   )r   r   r—   r
   r”   r#   r˜   r‘   r   r   r   Ú+test_categorize_transform_dict_with_default  s    
ÿÿz=TestDimTransforms.test_categorize_transform_dict_with_defaultc                 C   s<   t dƒ g d¢¡}t t g d¢¡¡ d¡}|  ||¡ d S )Nr   ©r   r&   rf   )
r   r   r   r   r   r   r   r   r   r#   Zint64)r   Údigitizer+   r,   r-   r<   rc   rP   r‘   r   r   r   Útest_digitize  s    zTestDimTransforms.test_digitizec                 C   sD   t dƒ g d¢¡ ddg¡}t tjg d¢dd¡}|  ||¡ d S )Nr   rœ   r   r#   )
r   r   r   r   r   r   r   r   r   r   Úbool)Zdtype)r   r   Zisinr+   r,   r-   r<   rP   r‘   r   r   r   Ú	test_isin’  s
    ÿzTestDimTransforms.test_isinc                 C   s2   t dƒd d d }|  || jd d d ¡ d S ©Nr   r   r#   rX   rV   r   r   r   Útest_multi_operator_expression›  s    z0TestDimTransforms.test_multi_operator_expressionc                 C   s(   t dƒt dƒ }|  || j| j ¡ d S )Nr   r   )r   rP   r.   r/   rV   r   r   r   Útest_multi_dim_expressionŸ  s    z+TestDimTransforms.test_multi_dim_expressionc                 C   s   |   ttdƒƒd¡ d S )Nr   zdim('float')©rD   Úreprr   ©r;   r   r   r   Útest_dim_repr¥  s    zTestDimTransforms.test_dim_reprc                 C   s   |   ttdƒ ƒd¡ d S )Nr   z-dim('float')r¤   r¦   r   r   r   Útest_unary_op_repr¨  s    z$TestDimTransforms.test_unary_op_reprc                 C   s   |   ttdƒd ƒd¡ d S )Nr   r   zdim('float')*2r¤   r¦   r   r   r   Útest_binary_op_repr«  s    z%TestDimTransforms.test_binary_op_reprc                 C   s   |   tdtdƒ ƒd¡ d S )Nr   r   z1+dim('float')r¤   r¦   r   r   r   Útest_reverse_binary_op_repr®  s    z-TestDimTransforms.test_reverse_binary_op_reprc                 C   s   |   tt tdƒ¡ƒd¡ d S )Nr   zdim('float').log())rD   r¥   r-   r   r   r¦   r   r   r   Útest_ufunc_expression_repr±  s    z,TestDimTransforms.test_ufunc_expression_reprc                 C   s   |   ttdƒ ¡ ƒd¡ d S )Nr   zdim('float').norm())rD   r¥   r   r…   r¦   r   r   r   Útest_custom_func_repr´  s    z'TestDimTransforms.test_custom_func_reprc                 C   s$   |   ttdƒd d d ƒd¡ d S )Nr   r   r#   z((dim('float')-2)*3)**2r¤   r¦   r   r   r   Ú#test_multi_operator_expression_repr·  s    ÿz5TestDimTransforms.test_multi_operator_expression_reprc                 C   s$   |   tdƒtdƒ  | j¡d¡ d S )Nr   r   T©rD   r   Zappliesr1   r¦   r   r   r   Ú!test_multi_dim_expression_applies½  s    ÿz3TestDimTransforms.test_multi_dim_expression_appliesc                 C   s$   |   tdƒtdƒ  | j¡d¡ d S )NZfooÚbarFr®   r¦   r   r   r   Ú%test_multi_dim_expression_not_appliesÁ  s    ÿz7TestDimTransforms.test_multi_dim_expression_not_appliesc                 C   s$   |   tdƒtdƒ  | j¡d¡ d S )Nr   r°   Fr®   r¦   r   r   r   Ú)test_multi_dim_expression_partial_appliesÅ  s    ÿz;TestDimTransforms.test_multi_dim_expression_partial_appliesc                 C   s   |   ttdƒjjjƒd¡ d S )NÚdatezdim('date').pd.dt.year)rD   r¥   r   ÚdfZdtZyearr¦   r   r   r   Ú#test_pandas_namespace_accessor_reprË  s    ÿz5TestDimTransforms.test_pandas_namespace_accessor_reprc                 C   s(   t dƒjj ¡ }|  || jj ¡ ¡ d S )Nr   )r   r´   rƒ   ÚlowerrP   r0   rV   r   r   r   Útest_pandas_str_accessorÏ  s    z*TestDimTransforms.test_pandas_str_accessorc                 C   s0   t dƒj d¡ ¡ }|  || j d¡ ¡ ¡ d S r‡   )r   r´   ZrollingÚmeanrP   r.   rV   r   r   r   Útest_pandas_chained_methodsÓ  s    z-TestDimTransforms.test_pandas_chained_methodsc                 C   s    |   ttdƒj d¡ƒd¡ d S )Nr³   çffffffî?zdim('date').xr.quantile(0.95))rD   r¥   r   r5   Úquantiler¦   r   r   r   Ú!test_xarray_namespace_method_repr×  s    ÿz3TestDimTransforms.test_xarray_namespace_method_reprc                 C   s0   t dƒj d¡}| j|| jjj d¡dd d S )Nr*   rº   Tr‚   )r   r5   r»   rS   r7   r!   r*   rV   r   r   r   Útest_xarray_quantile_methodÜ  s    z-TestDimTransforms.test_xarray_quantile_methodc                 C   s<   t dƒjjddidd}|  || jjjjddidd¡ d S )Nr*   r(   r   F)Zroll_coords)r   r5   ZrollrS   r7   r!   r*   rV   r   r   r   Útest_xarray_roll_methodá  s    z)TestDimTransforms.test_xarray_roll_methodc                 C   s<   t dƒj ddi¡ ¡ }|  || jjj ddi¡ ¡ ¡ d S )Nr*   r(   é   )r   r5   Zcoarsenr¸   rS   r7   r!   r*   rV   r   r   r   Útest_xarray_coarsen_methodæ  s    z,TestDimTransforms.test_xarray_coarsen_methodc                 C   s`   t dd}tdƒ|jj }|  t|j ¡ ƒ|jjg¡ |  || j	¡ d|_|  || j	d ¡ d S ©Nr   ©r   r   r   )
r	   r   r   r   rD   ÚlistÚparamsrI   rP   r/   ©r;   ÚprK   r   r   r   Útest_dynamic_mulî  s    
z"TestDimTransforms.test_dynamic_mulc                 C   sn   t dd}tdƒ |jj¡}|  t|j ¡ ƒ|jjg¡ |  	|t
 | jd¡¡ d|_|  	|t
 | jd¡¡ d S rÁ   ©r	   r   rw   r   r   rD   rÃ   rÄ   rI   rP   r-   r/   rÅ   r   r   r   Útest_dynamic_argö  s    
z"TestDimTransforms.test_dynamic_argc                 C   sp   t dd}tdƒj|jjd}|  t|j ¡ ƒ|jjg¡ |  	|t
 | jd¡¡ d|_|  	|t
 | jd¡¡ d S )Nr   rÂ   r   )Zdecimalsr   rÈ   rÅ   r   r   r   Útest_dynamic_kwargþ  s    
z$TestDimTransforms.test_dynamic_kwargc                 C   s4   t dƒd d d }t t |¡¡}|  ||¡ d S r¡   )r   ÚpickleÚloadsÚdumpsrD   )r;   rK   Zexpr2r   r   r   Útest_pickle  s    zTestDimTransforms.test_pickleN)FF)FF)Fr   r   r   r=   rP   rS   rW   rY   rZ   r[   r\   r_   r`   rd   re   rg   rh   ri   rk   rl   rm   rn   rp   rq   rr   rt   rv   rx   rz   r|   r~   r€   r   r„   r†   r‰   rŠ   r‹   r’   r“   r™   rš   r›   rž   r    r¢   r£   r§   r¨   r©   rª   r«   r¬   r­   r¯   r±   r²   rµ   r·   r¹   Úxr_skipr¼   r½   r¾   Úpy2_skiprÀ   rÇ   rÉ   rÊ   rÎ   r   r   r   r   r   )   sŒ   )
G
>
	


r   )#Ú__doc__Z
__future__r   ÚsysrË   Úcollectionsr   Zunittestr   Znumpyr-   Zpandasr+   r   Zdask.dataframeZ	dataframer2   Z
dask.arrayr<   r8   rQ   r5   Úversion_infoÚmajorrÐ   rÏ   Zholoviews.core.datar   Zholoviews.element.comparisonr   Zholoviews.util.transformr   ZParameterizedr	   r   r   r   r   r   Ú<module>   s0   
