a
    oÝEb«>  ã                   @   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u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   úa/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/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g d¢¡dd„ ƒZdd„ Zdd„ Zej deedd„ dd„ g¡ej d g d!¢¡d"d#„ ƒƒZd$S )%ÚGenericÚfuncc                 C   s   i | ]}||  ¡ “qS r   ©Úlower©Ú.0Úxr   r   r   Ú
<dictcomp>:   ó    zGeneric.<dictcomp>ÚABCDc                 C   s   i | ]}||  ¡ “qS r   r    r"   r   r   r   r%   ;   r&   c           	      C   sf   t dƒ}|jD ]R}||i}tdi |¤Ž}|jf i ||i¤Ž}| ¡ }t||t dƒƒ t ||¡ qd S )Nr'   é   Úabcd)r(   )ÚlistZ_AXIS_ORDERSr   Úrenamer   ÚsetattrÚtmÚassert_equal)	ÚselfÚframe_or_seriesr   ÚidxÚaxisr   ÚobjÚresultÚexpectedr   r   r   Útest_rename6   s    
zGeneric.test_renamec                    s¾   d‰‡ ‡fdd„t ˆ jƒD ƒ}tˆfi |¤Ž}| ¡ }t ||¡ | ¡ }tˆfddi|¤Ž}t|tƒrx|j	d d… |_	t ||¡ t
 g d¢¡}tˆfd|i|¤Ž}| ¡ }t ||¡ d S )Nr(   c                    s    i | ]}ˆ   |¡ttˆƒƒ“qS r   )Ú_get_axis_namer*   Úrange)r#   Úi©r0   Únr   r   r%   P   s   ÿz1Generic.test_get_numeric_data.<locals>.<dictcomp>r   r   r   )TTFT)r8   r   r   Z_get_numeric_datar-   r.   Z_get_bool_datar
   r   Úcolumnsr   Úarray)r/   r0   r   Úor4   r5   r   r   r:   r   Útest_get_numeric_dataM   s     þ
zGeneric.test_get_numeric_datac                 C   s†  t |dd�}d|j› d�}tjt|d�� t|dkƒ W d   ƒ n1 sJ0    Y  tjt|d�� t|dkƒ W d   ƒ n1 s„0    Y  tjt|d�� t|ƒ W d   ƒ n1 sº0    Y  t |ddd�}tjt|d�� t|dkƒ W d   ƒ n1 �s0    Y  tjt|d�� t|dkƒ W d   ƒ n1 �s@0    Y  tjt|d�� t|ƒ W d   ƒ n1 �sx0    Y  t |dtjd�}tjt|d�� t|dkƒ W d   ƒ n1 �sÄ0    Y  tjt|d�� t|dkƒ W d   ƒ n1 �s 0    Y  tjt|d�� t|ƒ W d   ƒ n1 �s80    Y  t |dd�}tjt|d�� t|ƒ W d   ƒ n1 �s|0    Y  t |ddd�}t |ddd�}tjt|d�� |�r¸W d   ƒ n1 �sÎ0    Y  tjt|d�� |�oð| W d   ƒ n1 �s0    Y  tjt|d�� |�p*| W d   ƒ n1 �sB0    Y  tjt|d�� |  W d   ƒ n1 �sx0    Y  d S )	Nr(   ©r   zThe truth value of a z is ambiguous©Úmatchr   é   )r   r   )r   Ú__name__ÚpytestÚraisesÚ
ValueErrorÚboolr   Únan)r/   r0   r3   ÚmsgZobj1Úobj2r   r   r   Útest_nonzeroh   sH    **&,,(,,(( **zGeneric.test_nonzeroc                    sp   ‡ fdd„}dˆ j › d�}tjt|d�� |g d¢ƒ W d   ƒ n1 sJ0    Y  |dƒ |dƒ |d	ƒ d S )
Nc                    s   t ˆ dd| d�S )Né   rC   )r   r   r	   )r   r   ©r0   r   r   Úfž   s    z7Generic.test_frame_or_series_compound_dtypes.<locals>.fz+compound dtypes are not implemented in the z frame_or_seriesrA   ))ÚAzdatetime64[h])ÚBÚstr)ÚCZint32Zint64r   zM8[ns])rD   rE   rF   ÚNotImplementedError)r/   r0   rO   rJ   r   rN   r   Ú$test_frame_or_series_compound_dtypesš   s    ÿÿ*z,Generic.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 )NrM   r@   ÚfooÚbar)Ú__add__Ú__sub__Ú__truediv__Ú__mul__rC   )Ú__eq__Ú__le__Ú__ge__)r   ÚnameÚgetattrr-   Zassert_metadata_equivalentZcombine_first)r/   r0   r>   Úo2Úopr4   Úv1Úv2r   r   r   Útest_metadata_propagation®   s2    


z!Generic.test_metadata_propagationc                 C   s>   t |dd�}|jt |j¡ks"J ‚|jdt|jƒ ks:J ‚d S )Né
   r@   )r   Úsizer   r   r   ÚlenÚaxes©r/   r0   r>   r   r   r   Útest_size_compatá   s    zGeneric.test_size_compatc                 C   s@   t |dd�}tt |d¡ƒdks$J ‚tt |d¡ƒdks<J ‚d S )Nrf   r@   é   é   )r   rh   r   Zarray_splitrj   r   r   r   Útest_split_compaté   s    zGeneric.test_split_compatc                 C   sþ   t |dƒ}d}d}tjt|d�� |j|d� W d   ƒ n1 sB0    Y  tjt|d�� |j|d� W d   ƒ n1 s|0    Y  tjt|d�� |j|d� W d   ƒ n1 s¶0    Y  tjt|d�� |j|d� W d   ƒ n1 sð0    Y  d S )Nrl   z	Star Warszunexpected keywordrA   )Zepic)r   rE   rF   Ú	TypeErrorÚmaxÚvarÚsumÚany)r/   r0   r3   ZstarwarsÚerrmsgr   r   r   Útest_stat_unexpected_keywordð   s    
***z$Generic.test_stat_unexpected_keyword)rr   Zcumsumrs   rq   c                 C   s4   |df}t ||ƒ}|j|ks J ‚|j |¡s0J ‚d S )Nrl   )r`   rD   Ú__qualname__Úendswith)r/   r   r0   r3   rO   r   r   r   Útest_api_compatþ   s    
zGeneric.test_api_compatc                 C   s  t |dƒ}t dg¡}d}tjt|d�� |j|d� W d   ƒ n1 sJ0    Y  tjt|d�� |j|d� W d   ƒ n1 s„0    Y  tjt|d�� |j|d� W d   ƒ n1 s¾0    Y  tjt|d�� |j	|d� W d   ƒ n1 sø0    Y  d S )Nrl   r   ú$the 'out' parameter is not supportedrA   ©Úout)
r   r   r=   rE   rF   rG   rp   rq   rr   rs   )r/   r0   r3   r{   rt   r   r   r   Útest_stat_non_defaults_args	  s    
***z#Generic.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Ð  rC   Zint8)r	   r   r   g     p§@)ÚbeforeÚafteréÿÿÿÿg     @Ÿ@i€„ g    `ãFAg    €„>A)r   r   r-   r.   Útruncate)r/   r0   r   ÚsmallÚbigr   r   r   Útest_truncate_out_of_bounds  s    z#Generic.test_truncate_out_of_boundsc                 C   s   | j dd�S )NF©Údeep©r   ©r$   r   r   r   Ú<lambda>*  r&   zGeneric.<lambda>c                 C   s   | j dd�S )NTr„   r†   r‡   r   r   r   rˆ   *  r&   r   )r   rC   rm   c                 C   s.   t ||ƒ}||ƒ}||usJ ‚t ||¡ d S ©N)r   r-   r.   )r/   r0   r   r   r3   Zobj_copyr   r   r   Útest_copy_and_deepcopy(  s    
zGeneric.test_copy_and_deepcopyN)rD   Ú
__module__rv   rE   ÚmarkÚparametrizerR   r!   r*   r   r6   r?   rL   rU   re   rk   rn   ru   rx   r|   rƒ   r   r   rŠ   r   r   r   r   r   5   s2   ýþ
23

þr   c                   @   s~   e Z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dd„ Zdd„ Zdd„ ZdS )ÚTestNDFramec                 C   s
  t  ¡ t  ¡ t  ¡ fD ]}t  | ¡ |¡ qt  ¡ fD ]}t  | ¡ |¡ q6t  ¡ jdgd�}t  | ¡ |d ¡ t	g dt
jd�}t|gƒ}t  || ¡ ¡ t  || ¡ ¡ t jdd�jd d …d d…f }|jdksØJ ‚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�shJ ‚d}tjt|d�� |jdd	� W d   ƒ n1 �sž0    Y  d}tjt|d�� |jdd	� W d   ƒ n1 �sÞ0    Y  t  d¡}t  |jdd	�|¡ d S )NrP   ©r<   Úfive)r_   r	   rC   )Znper)rC   rC   r   ©r2   Úindexr<   )r   r   z)No axis named 2 for object type DataFramerA   rm   z)No axis named x for object type DataFramer$   rM   )r-   ÚmakeFloatSeriesÚmakeStringSeriesÚmakeObjectSeriesÚassert_series_equalÚsqueezeÚmakeTimeDataFrameÚassert_frame_equalÚreindexr   r   r   r   Zilocr   rE   rF   rG   )r/   ÚsÚdfZempty_seriesZempty_framerJ   r   r   r   Útest_squeeze8  s2    
"",,
zTestNDFrame.test_squeezec                 C   sF   t  ¡ }t  t |¡|¡ t  ¡ jdgd�}t  t |¡|d ¡ d S )NrP   r�   )r-   r“   r–   r   r—   r˜   rš   ©r/   r›   rœ   r   r   r   Útest_numpy_squeeze[  s    zTestNDFrame.test_numpy_squeezec                 C   sT   t  ¡ t  ¡ t  ¡ fD ]}t  | ¡ |¡ qt  ¡ fD ]}t  | ¡  ¡ |¡ q6d S r‰   )r-   r“   r”   r•   r–   Ú	transposer˜   r™   rž   r   r   r   Útest_transposeb  s    zTestNDFrame.test_transposec                 C   sŠ   t  ¡ }t  ||¡}|tu r.t  t |¡|¡ t  t t |¡¡|¡ d}tj	t
|d�� tj|dd� W d   ƒ n1 s|0    Y  d S )Nz%the 'axes' parameter is not supportedrA   rC   )ri   )r-   r˜   Úget_objr   r–   r   r    r.   rE   rF   rG   )r/   r0   r3   rJ   r   r   r   Útest_numpy_transposei  s    z TestNDFrame.test_numpy_transposec                 C   s¨   g d¢}t  ¡ t  ¡ t  ¡ fD ]:}| |¡}t|j |¡|j |¡|jd�}t  	||¡ qt  
¡ fD ]>}| |¡}t|jj|dd�|j |¡|jd�}t  ||¡ qdd S )N)rC   rl   éþÿÿÿé   rM   r   )Údatar’   r	   r   r‘   )r¦   r’   r<   )r-   r“   r”   r•   Útaker   Úvaluesr’   r	   r–   r˜   r   r<   r™   )r/   Úindicesr›   r{   r5   rœ   r   r   r   Ú	test_takey  s    
ÿ

ýzTestNDFrame.test_takec                 C   sà   g d¢}t  ¡ }t  ||¡}d}tjt|d�� |j|dd� W d   ƒ n1 sR0    Y  d}tjt|d�� |j||d� W d   ƒ n1 s’0    Y  d}tjt|d�� |j|d	d
� W d   ƒ n1 sÒ0    Y  d S )N)éýÿÿÿrm   r   rC   z1take\(\) got an unexpected keyword argument 'foo'rA   rm   )rV   ry   rz   z%the 'mode' parameter is not supportedZclip)Úmode)r-   r˜   r¢   rE   rF   ro   r§   rG   )r/   r0   r©   r3   rJ   r   r   r   Útest_take_invalid_kwargsŠ  s    ,,z$TestNDFrame.test_take_invalid_kwargsÚis_copyTFc                 C   sx   t dg d¢iƒ}t ||¡}d}t t¡�"}|jddg|d� W d   ƒ n1 sR0    Y  |d jjd |kstJ ‚d S )NrP   )rC   rm   rM   z�is_copy is deprecated and will be removed in a future version. 'take' always returns a copy, so there is no need to specify this.r   rC   )r®   )r   r-   r¢   Úassert_produces_warningÚFutureWarningr§   ÚmessageÚargs)r/   r®   r0   r3   rJ   Úwr   r   r   Útest_depr_take_kwarg_is_copyœ  s    ÿ0z(TestNDFrame.test_depr_take_kwarg_is_copyc                 C   sn   |}|t d�}|j ¡ }|D ]L}| |¡| |¡ks8J ‚| |¡| |¡ksPJ ‚| |¡| |¡ksJ ‚qd S )Nr   )ÚobjectZ_AXIS_TO_AXIS_NUMBERÚkeysZ_get_axis_numberr7   Z_get_block_manager_axis)r/   r0   r   r3   r¨   Úvr   r   r   Útest_axis_classmethods«  s    

z"TestNDFrame.test_axis_classmethodsc                 C   sJ   |}|t d�}d}tjt|d�� |j W d   ƒ n1 s<0    Y  d S )Nr   z_AXIS_NAMES has been deprecatedrA   )rµ   r-   r¯   r°   Z_AXIS_NAMES©r/   r0   r   r3   rJ   r   r   r   Útest_axis_names_deprecated´  s
    
z&TestNDFrame.test_axis_names_deprecatedc                 C   sJ   |}|t d�}d}tjt|d�� |j W d   ƒ n1 s<0    Y  d S )Nr   z!_AXIS_NUMBERS has been deprecatedrA   )rµ   r-   r¯   r°   Z_AXIS_NUMBERSr¹   r   r   r   Útest_axis_numbers_deprecated¼  s
    
z(TestNDFrame.test_axis_numbers_deprecatedc                 C   sH   t ddgƒ}|tu r| ¡ }|j|ju s,J ‚| ¡ }|j|jusDJ ‚d S )NrC   rm   )r   r   Zto_frameÚflagsr   )r/   r0   r3   rK   r   r   r   Útest_flags_identityÄ  s    zTestNDFrame.test_flags_identityc                 C   sR   t dg d¢iƒ}t ||¡}t t¡� | ¡  W d   ƒ n1 sD0    Y  d S )NrP   )rC   rm   rM   r(   )r   r-   r¢   r¯   r°   Zslice_shift)r/   r0   r3   r   r   r   Útest_slice_shift_deprecatedÍ  s    z'TestNDFrame.test_slice_shift_deprecatedN)rD   r‹   rv   r�   rŸ   r¡   r£   rª   r­   rE   rŒ   r�   r´   r¸   rº   r»   r½   r¾   r   r   r   r   rŽ   5  s   #
		rŽ   )NN)r   r   Únumpyr   rE   Zpandas.core.dtypes.commonr   Zpandasr   r   Zpandas._testingZ_testingr-   r   r   rŽ   r   r   r   r   Ú<module>   s   
   