U
    ùQ”i_;  ã                   @   sr   d dl m Z mZ d dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZ ddd„ZG dd„ dƒZG d	d
„ d
ƒZdS )é    )ÚcopyÚdeepcopyN)Ú	is_scalar)Ú	DataFrameÚSeriesc                 K   sÔ   t |tƒrt|g| j ƒ}|dk	r´t|ƒrf|dkrLd}tj}| | jd¡ q²tj	||d�}| 
|¡ qÀt |¡}| ¡ }||jd  }||jd  dkr tdƒ‚t ||¡ |¡}ntjj|Ž }| |fd|i|—ŽS )z’
    construct an object for the given shape
    if value is specified use that if its a scalar
    if value is an array, repeat it as needed
    NÚempty©Údtyper   z!invalid value passed in constructr	   )Ú
isinstanceÚintÚtupleÚ	_AXIS_LENr   ÚnpÚfloat64ÚpopZ_info_axis_namer   ÚfillÚprodZravelÚshapeÚ	ExceptionÚrepeatZreshapeÚrandomZrandn)Úboxr   Úvaluer	   ÚkwargsÚarrZfshapeZ	new_shape© r   úE/tmp/pip-unpacked-wheel-58ppya8e/pandas/tests/generic/test_generic.pyÚ	construct   s$    

r   c                	   @   sê   e Zd Zej dejdd„ edƒD ƒe	dd„ edƒD ƒƒ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ej dddddg¡dd„ ƒZdd„ Zdd„ Zej deed d!„ d"d!„ g¡ej d#d$d%d&g¡d'd(„ ƒƒZd)S )*ÚTestGenericÚfuncc                 C   s   i | ]}||  ¡ “qS r   ©Úlower©Ú.0Úxr   r   r   Ú
<dictcomp>:   s      zTestGeneric.<dictcomp>ÚABCDc                 C   s   i | ]}||  ¡ “qS r   r    r"   r   r   r   r%   ;   s      c           	      C   sb   t dƒ}|jD ]N}||i}t|df|Ž}|jf ||iŽ}| ¡ }t||t dƒƒ t ||¡ qd S )Nr&   é   Zabcd)ÚlistZ_AXIS_ORDERSr   Úrenamer   ÚsetattrÚtmÚassert_equal)	ÚselfÚframe_or_seriesr   ÚidxÚaxisr   ÚobjÚresultÚexpectedr   r   r   Útest_rename6   s    

zTestGeneric.test_renamec                    sÌ   d‰‡ ‡fdd„t ˆ jƒD ƒ}tˆ ˆf|Ž}| ¡ }t ||¡ | ¡ }tˆ ˆfddi|—Ž}t|tƒrx|j	d d… |_	t |j
dd�|¡ t ddd	dg¡}tˆ ˆfd|i|—Ž}| ¡ }t ||¡ d S )
Nr'   c                    s    i | ]}ˆ   |¡ttˆƒƒ“qS r   )Ú_get_axis_namer(   Úrange)r#   Úi©r.   Únr   r   r%   N   s   ÿ z5TestGeneric.test_get_numeric_data.<locals>.<dictcomp>r   r   r   T)ZdropF)r6   r   r   Z_get_numeric_datar+   r,   Z_get_bool_datar
   r   ÚcolumnsZreset_indexr   Úarray)r-   r.   r   Úor2   r3   r   r   r8   r   Útest_get_numeric_dataL   s     þ
z!TestGeneric.test_get_numeric_datac              	   C   sX  t |dd�}d|j› d�}tjt|d�� t|dkƒ W 5 Q R X tjt|d�� t|dkƒ W 5 Q R X tjt|d�� t|ƒ W 5 Q R X t |ddd�}tjt|d�� t|dkƒ W 5 Q R X tjt|d�� t|dkƒ W 5 Q R X tjt|d�� t|ƒ W 5 Q R X t |dtjd�}tjt|d�� t|dkƒ W 5 Q R X tjt|d�� t|dkƒ W 5 Q R X tjt|d�� t|ƒ W 5 Q R X t |dd�}tjt|d�� t|ƒ W 5 Q R X t |ddd�}t |ddd�}tjt|d�� |�râW 5 Q R X tjt|d�� |�o| W 5 Q R X tjt|d�� |�p(| W 5 Q R X tjt|d�� |  W 5 Q R X d S )	Nr'   ©r   zThe truth value of a z is ambiguous©Úmatchr   é   )r   r   )r   Ú__name__ÚpytestÚraisesÚ
ValueErrorÚboolr   Únan)r-   r.   r1   ÚmsgZobj1Úobj2r   r   r   Útest_nonzerog   sH    
zTestGeneric.test_nonzeroc              	      s^   ‡ fdd„}dˆ j › d�}tjt|d�� |dddgƒ W 5 Q R X |d	ƒ |d
ƒ |dƒ d S )Nc                    s   t ˆ dd| d�S )Né   rA   )r   r   r	   )r   r   ©r.   r   r   Úfœ   s    z;TestGeneric.test_frame_or_series_compound_dtypes.<locals>.fz+compound dtypes are not implemented in the z constructorr?   )ÚAzdatetime64[h])ÚBÚstr)ÚCZint32Zint64r   zM8[ns])rB   rC   rD   ÚNotImplementedError)r-   r.   rM   rH   r   rL   r   Ú$test_frame_or_series_compound_dtypes˜   s    ÿz0TestGeneric.test_frame_or_series_compound_dtypesc                 C   s(  t |dd�}d|_t |dd�}d|_dD ]}t||ƒdƒ}t ||¡ q(dD ]}t||ƒ|ƒ}t ||¡ qLdD ]>}t||ƒ|ƒ}t ||¡ t |||@ ¡ t |||B ¡ qp| |¡}t ||¡ || }t |¡ dD ]F}t||ƒ|ƒ}t||ƒ|ƒ}t |¡ t ||@ ¡ t ||B ¡ qÜd S )NrK   r>   ÚfooÚbar)Ú__add__Ú__sub__Ú__truediv__Ú__mul__rA   )Ú__eq__Ú__le__Ú__ge__)r   ÚnameÚgetattrr+   Zassert_metadata_equivalentZcombine_first)r-   r.   r<   Zo2Úopr2   Zv1Zv2r   r   r   Útest_metadata_propagation¬   s2    


z%TestGeneric.test_metadata_propagationc                 C   s>   t |dd�}|jt |j¡ks"t‚|jdt|jƒ ks:t‚d S )Né
   r>   )r   Úsizer   r   r   ÚAssertionErrorÚlenÚaxes©r-   r.   r<   r   r   r   Útest_size_compatÞ   s    zTestGeneric.test_size_compatc                 C   s@   t |dd�}tt |d¡ƒdks$t‚tt |d¡ƒdks<t‚d S )Nra   r>   é   é   )r   rd   r   Zarray_splitrc   rf   r   r   r   Útest_split_compatæ   s    zTestGeneric.test_split_compatc              	   C   s®   t |dƒ}d}d}tjt|d�� |j|d� W 5 Q R X tjt|d�� |j|d� W 5 Q R X tjt|d�� |j|d� W 5 Q R X tjt|d�� |j|d� W 5 Q R X d S )Nrh   z	Star Warszunexpected keywordr?   )Zepic)r   rC   rD   Ú	TypeErrorÚmaxÚvarÚsumÚany)r-   r.   r1   ZstarwarsÚerrmsgr   r   r   Útest_stat_unexpected_keywordí   s    
z(TestGeneric.test_stat_unexpected_keywordrn   Zcumsumro   rm   c                 C   s6   t |dƒ}t||ƒ}|j|ks"t‚|j |¡s2t‚d S )Nrh   )r   r^   rB   rc   Ú__qualname__Úendswith)r-   r   r.   r1   rM   r   r   r   Útest_api_compatû   s    

zTestGeneric.test_api_compatc              	   C   s¶   t |dƒ}t dg¡}d}tjt|d�� |j|d� W 5 Q R X tjt|d�� |j|d� W 5 Q R X tjt|d�� |j|d� W 5 Q R X tjt|d�� |j	|d� W 5 Q R X d S )Nrh   r   ú$the 'out' parameter is not supportedr?   ©Úout)
r   r   r;   rC   rD   rE   rl   rm   rn   ro   )r-   r.   r1   rw   rp   r   r   r   Útest_stat_non_defaults_args  s    
z'TestGeneric.test_stat_non_defaults_argsc                 C   sÈ   dgdg|j d   }t||ddd�}t | ¡ |¡ t |jddd�|¡ t |jdd	d�|¡ d
gdg|j d   }t||ddd�}t | ¡ |¡ t |jddd�|¡ t |jddd�|¡ d S )NiÐ  rA   Zint8)r	   r   r   g     p§@)ÚbeforeÚafteréÿÿÿÿg     @Ÿ@i€„ g    `ãFAg    €„>A)r   r   r+   r,   Útruncate)r-   r.   r   ÚsmallÚbigr   r   r   Útest_truncate_out_of_bounds  s    z'TestGeneric.test_truncate_out_of_boundsc                 C   s   | j dd�S )NF©Údeep©r   ©r$   r   r   r   Ú<lambda>&  ó    zTestGeneric.<lambda>c                 C   s   | j dd�S )NTr€   r‚   rƒ   r   r   r   r„   &  r…   r   r   rA   ri   c                 C   s.   t ||ƒ}||ƒ}||k	st‚t ||¡ d S ©N)r   rc   r+   r,   )r-   r.   r   r   r1   Zobj_copyr   r   r   Útest_copy_and_deepcopy$  s    
z"TestGeneric.test_copy_and_deepcopyN)rB   Ú
__module__rr   rC   ÚmarkÚparametrizerP   r!   r(   r   r4   r=   rJ   rS   r`   rg   rj   rq   rt   rx   r   r   r   r‡   r   r   r   r   r   5   s2   ýþ
12
	þr   c                   @   sä   e Zd Zej de ¡ e ¡ e 	¡ g¡dd„ ƒZ
dd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zej de ¡ e ¡ e 	¡ g¡dd„ ƒZdd„ Zdd„ Zej de ¡ e ¡ e 	¡ g¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zd S )!ÚTestNDFrameÚserc                 C   s   t  | ¡ |¡ d S r†   )r+   Úassert_series_equalÚsqueeze©r-   rŒ   r   r   r   Útest_squeeze_series_noop4  s    z$TestNDFrame.test_squeeze_series_noopc                 C   s   t  ¡ }t  | ¡ |¡ d S r†   ©r+   ÚmakeTimeDataFrameÚassert_frame_equalrŽ   ©r-   Údfr   r   r   Útest_squeeze_frame_noop;  s    z#TestNDFrame.test_squeeze_frame_noopc                 C   s*   t  ¡ jdgd�}t  | ¡ |d ¡ d S ©NrN   )r:   )r+   r’   Úreindexr�   rŽ   r”   r   r   r   Útest_squeeze_frame_reindex@  s    z&TestNDFrame.test_squeeze_frame_reindexc                 C   s>   t g dtjd�}t|gƒ}t || ¡ ¡ t || ¡ ¡ d S )NZfive)r]   r	   )r   r   r   r   r+   r�   rŽ   )r-   Zempty_seriesZempty_framer   r   r   Útest_squeeze_0_len_dimE  s    
z"TestNDFrame.test_squeeze_0_len_dimc              	   C   s  t jdd�jd d …d d…f }|jdks,t‚t  |jdd�|jd ¡ t  |jdd�|jd ¡ t  |jdd�|jd d …df ¡ t  |jdd�|jd d …df ¡ | ¡ |jd ksºt‚d	}tjt	|d
�� |jdd� W 5 Q R X d}tjt	|d
�� |jdd� W 5 Q R X d S )NrA   )Znper)rA   rA   r   ©r0   Úindexr:   )r   r   z)No axis named 2 for object type DataFramer?   ri   z)No axis named x for object type DataFramer$   )
r+   r’   Zilocr   rc   r�   rŽ   rC   rD   rE   )r-   r•   rH   r   r   r   Útest_squeeze_axisL  s    ""zTestNDFrame.test_squeeze_axisc                 C   s"   t  d¡}t  |jdd�|¡ d S )NrK   r   r›   r‘   r”   r   r   r   Útest_squeeze_axis_len_3\  s    
z#TestNDFrame.test_squeeze_axis_len_3c                 C   sF   t  ¡ }t  t |¡|¡ t  ¡ jdgd�}t  t |¡|d ¡ d S r—   )r+   ÚmakeFloatSeriesr�   r   rŽ   r’   r˜   )r-   Úsr•   r   r   r   Útest_numpy_squeeze`  s    zTestNDFrame.test_numpy_squeezec                 C   s   t  | ¡ |¡ d S r†   )r+   r�   Ú	transposer�   r   r   r   Útest_transpose_seriesg  s    z!TestNDFrame.test_transpose_seriesc                 C   s    t  ¡ }t  | ¡  ¡ |¡ d S r†   )r+   r’   r“   r¢   r”   r   r   r   Útest_transpose_framen  s    z TestNDFrame.test_transpose_framec              	   C   sv   t  ¡ }t  ||¡}|tkr.t  t |¡|¡ t  t t |¡¡|¡ d}tj	t
|d�� tj|dd� W 5 Q R X d S )Nz%the 'axes' parameter is not supportedr?   rA   )re   )r+   r’   Úget_objr   r�   r   r¢   r,   rC   rD   rE   )r-   r.   r1   rH   r   r   r   Útest_numpy_transposer  s    z TestNDFrame.test_numpy_transposec                 C   sJ   ddddddg}|  |¡}t|j  |¡|j  |¡|jd�}t ||¡ d S )NrA   rh   éþÿÿÿé   rK   r{   )Údatarœ   r	   )Útaker   Úvaluesrœ   r	   r+   r�   )r-   rŒ   Úindicesrw   r3   r   r   r   Útest_take_series�  s    


ýzTestNDFrame.test_take_seriesc                 C   sV   ddddddg}t  ¡ }| |¡}t|jj|dd�|j |¡|jd	�}t  ||¡ d S )
NrA   rh   r§   r¨   rK   r{   r   r›   )r©   rœ   r:   )r+   r’   rª   r   r«   rœ   r:   r“   )r-   r¬   r•   rw   r3   r   r   r   Útest_take_frameŽ  s    

ýzTestNDFrame.test_take_framec              	   C   s¨   ddddg}t  ¡ }t  ||¡}d}tjt|d�� |j|dd� W 5 Q R X d}tjt|d�� |j||d	� W 5 Q R X d
}tjt|d�� |j|dd� W 5 Q R X d S )Néýÿÿÿri   r   rA   z1take\(\) got an unexpected keyword argument 'foo'r?   )rT   ru   rv   z%the 'mode' parameter is not supportedZclip)Úmode)r+   r’   r¥   rC   rD   rk   rª   rE   )r-   r.   r¬   r1   rH   r   r   r   Útest_take_invalid_kwargs™  s    z$TestNDFrame.test_take_invalid_kwargsc                 C   sn   |}|t d�}|j ¡ }|D ]L}| |¡| |¡ks8t‚| |¡| |¡ksPt‚| |¡| |¡kst‚qd S )Nr   )ÚobjectZ_AXIS_TO_AXIS_NUMBERÚkeysZ_get_axis_numberrc   r5   Z_get_block_manager_axis)r-   r.   r   r1   r«   Úvr   r   r   Útest_axis_classmethods«  s    

z"TestNDFrame.test_axis_classmethodsc                 C   sH   t ddgƒ}|tkr| ¡ }|j|jks,t‚| ¡ }|j|jk	sDt‚d S )NrA   ri   )r   r   Zto_frameÚflagsrc   r   )r-   r.   r1   rI   r   r   r   Útest_flags_identity´  s    zTestNDFrame.test_flags_identityN)rB   rˆ   rr   rC   r‰   rŠ   r+   rŸ   ZmakeStringSeriesZmakeObjectSeriesr�   r–   r™   rš   r�   rž   r¡   r£   r¤   r¦   r­   r®   r±   rµ   r·   r   r   r   r   r‹   1  s6    ÿ
 ÿ
 ÿ

	r‹   )NN)r   r   Znumpyr   rC   Zpandas.core.dtypes.commonr   Zpandasr   r   Zpandas._testingZ_testingr+   r   r   r‹   r   r   r   r   Ú<module>   s   
  }