a
    oÝEbY:  ã                   @   s¶   d dl m Z mZ d dlZd dlZd dlZd dlmZ d dlm	  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mZ ejZG dd„ dƒZdd	„ Zd
d„ ZdS )é    )ÚdatetimeÚ	timedeltaN)ÚPerformanceWarning)ÚCategoricalÚ	DataFrameÚSeriesÚ	TimestampÚcompatÚ
date_rangeÚoption_context)ÚNumericBlockÚObjectBlockc                   @   sœ   e Z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%S )&ÚTestDataFrameBlockInternalsc                 C   sx   t dddd�}|d }td|iƒ}|d jjd u s6J ‚tj|jd< |d jjd u sVJ ‚|jdksdJ ‚|d |kstJ ‚d S )	NÚ20130101é   ú
US/Eastern)ÚperiodsÚtzé   ÚB)r   r   ÚD)r
   r   Z_valuesÚfreqÚpdZNaTZiloc)ÚselfZdtiÚtsÚdf© r   úg/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/frame/test_block_internals.pyÚ,test_setitem_invalidates_datetime_index_freq'   s    zHTestDataFrameBlockInternals.test_setitem_invalidates_datetime_index_freqc                 C   sX   t |jtd�}t |jtd�}t ||¡ t |jtjd�}t |jtjd�}t ||¡ d S )N©Údtype)r   Ú_mgrÚintZ_seriesÚtmÚassert_frame_equalÚnpÚint32)r   Úfloat_frameZcastedÚexpectedr   r   r   Útest_cast_internals8   s    z/TestDataFrameBlockInternals.test_cast_internalsc                 C   sŒ   d|d< |  ¡ }t|jjƒdks$J ‚|  ¡ }||us8J ‚t ||¡ d|d< t|jjƒdks`J ‚| ¡ }|d u stJ ‚t|jjƒdksˆJ ‚d S )Nç      @ÚEr   g       @ÚFr   )Z_consolidateÚlenr!   Úblocksr#   r$   Z_consolidate_inplace)r   r'   ZconsolidatedZreconsZreturn_valuer   r   r   Útest_consolidateA   s    z,TestDataFrameBlockInternals.test_consolidatec                 C   s4   |  ¡ }ttdƒtdƒƒD ]}t|ƒ|t|ƒ< qd S )NÚAÚZ)ÚcopyÚrangeÚordÚchr)r   r'   ÚframeÚletterr   r   r   Útest_consolidate_inplaceR   s    z4TestDataFrameBlockInternals.test_consolidate_inplacec                 C   s.   d|d< |j  ¡ rJ ‚|j}|j  ¡ s*J ‚d S )Nr*   r+   )r!   Zis_consolidatedÚvalues)r   r'   Ú_r   r   r   Útest_values_consolidateY   s    z3TestDataFrameBlockInternals.test_values_consolidatec                 C   st   d|j d< |j d dk ¡ s J ‚d|d< |d }d|j d< |j d dk ¡ sPJ ‚|d |us`J ‚|dk ¡ spJ ‚d S )Né   r*   r+   é   é   )r9   Úall)r   r'   Úcolr   r   r   Útest_modify_values_   s    

z.TestDataFrameBlockInternals.test_modify_valuesc                 C   s<   d|d< |j  ¡ }d||dk< d||dk< t ||j ¡ d S )Nr*   r+   é   r   )r9   r2   r#   Zassert_almost_equal)r   r'   r(   r   r   r   Útest_boolean_set_unconsm   s
    
z3TestDataFrameBlockInternals.test_boolean_set_unconsc              	   C   s  t ddgiƒ}|d }tt dgtj¡dd�}t ||¡ t ddgiƒ}|d }tt dgtj¡dd�}t ||¡ t dtdddƒdgiƒ}|d }tt tdddƒdgtj	¡dd�}t ||¡ t dd dgiƒ}|d }tt tj
dgtj¡dd�}t ||¡ t ddd	giƒ}|d }tt dd	gtj¡dd�}t ||¡ t dd
dgiƒ}|d }tt d
dgtj¡dd�}t ||¡ t dd
dgiƒ}|d }tt d
dgtj¡dd�}t ||¡ t dd
dgiƒ}|d }tt d
dgtj	¡dd�}t ||¡ t ddd giƒ}|d }tt dtj
gtj¡dd�}t ||¡ t dd
d giƒ}|d }tt d
tj
gtj¡dd�}t ||¡ t dg d¢iƒ}|d }tt g d¢tj	¡dd�}t ||¡ t dddtdddƒd giƒ}|d }tt ddtdddƒd gtj	¡dd�}t ||¡ d S )Nr0   l   ÿÿÿÿ )Únamel            iÕ  r   Tg      ð?rB   y      ð?       @r   g      @)ç       @r   TNrE   iÖ  )r   r   r%   ZasarrayÚint64r#   Úassert_series_equalZuint64r   Zobject_ÚnanZfloat_Zcomplex_)r   r   Úresultr(   r   r   r   Útest_constructor_with_convertv   sh    ÿÿz9TestDataFrameBlockInternals.test_constructor_with_convertc                 C   sî   t dddƒtjt dddƒgt dddƒt dddƒt dddƒgg}t|ƒ}|j}tddiƒ}t  ¡ |d< tddd	�|d
< |d jdks†J ‚|d
 jdks˜J ‚|j}tt d¡gd t d¡t d¡t d¡g t	dƒg d¢ d�}t
 ||¡ d S )NéÑ  r   r<   rB   iÐ  r   zdatetime64[ns]r   )ÚdaysÚsecondsr   úM8[ns]zm8[ns]Úfloat64é   Úobjectztimedelta64[ns]ÚABCD)Zfoor   r   ©Úindex)r   r%   rH   r   Zdtypesr   Únowr   r    Úlistr#   rG   )r   Úfloat_string_frameÚdatar   rI   r(   r   r   r   Útest_construction_with_mixed¹   s*     þýÿù	z8TestDataFrameBlockInternals.test_construction_with_mixedc                 C   s¸   t jg d¢dd�}ttdƒd�}||d< tdtjdddd	�itdƒd�}t ||¡ ttd
ƒt	d
dd�dœtdƒd�}ttdƒd�}t  
d¡|d< t jg d¢dd�|d< t ||¡ d S )N©r   rB   r   ztimedelta64[s]r   r   rS   r0   z00:00:01Ús)r   r   r   )r   )Údt1Údt2ú
2013-01-01r\   )r^   z
2013-01-02z
2013-01-03zdatetime64[D]r]   )r%   Úarrayr   r3   r   Ztimedelta_ranger#   r$   r   r
   Z
datetime64)r   Úarrr   r(   r   r   r   Ú"test_construction_with_conversionsØ   s&    ÿ
þú	ÿ
z>TestDataFrameBlockInternals.test_construction_with_conversionsc                 C   sÊ   dd„ }d}t jt|d�� |g d¢ƒ W d   ƒ n1 s<0    Y  d}tjt|d�� |dƒ W d   ƒ n1 sv0    Y  tjt|d�� |dƒ W d   ƒ n1 s¬0    Y  t ¡ sÆ|d	ƒ d S )
Nc                 S   s0   t t tdddƒddfd¡ƒ}t|g d¢| d�S )NrK   r   Zaaé   é	   )r0   r   ÚC)rX   Úcolumnsr    )rV   Ú	itertoolsÚrepeatr   r   )r    rX   r   r   r   Úfû   s    zGTestDataFrameBlockInternals.test_constructor_compound_dtypes.<locals>.fz@compound dtypes are not implemented in the DataFrame constructor)Úmatch))r0   zdatetime64[h])r   Ústr)rd   r&   zBeither all columns will be cast to that dtype, or a TypeError willrF   rO   rN   )ÚpytestZraisesÚNotImplementedErrorr#   Úassert_produces_warningÚFutureWarningr	   Zis_platform_windows)r   rh   ÚmsgZdepr_msgr   r   r   Ú test_constructor_compound_dtypes÷   s    *&&z<TestDataFrameBlockInternals.test_constructor_compound_dtypesc                 C   sP   t ƒ }t |¡}t ||¡ |jj t |¡}t|ƒ t |¡}t ||¡ d S ©N)r   r#   Zround_trip_pickler$   r!   ÚndimÚrepr)r   rW   Ztimezone_frameZempty_frameZ	unpickledr   r   r   Útest_pickle  s    


z'TestDataFrameBlockInternals.test_picklec                 C   s¼   t t g d¢¡t g d¢¡g d¢dœƒ}|j}|j|_| d¡}| d¡}d|j_|j	}|j|_| d¡}| d¡}d|j_|j|_|j|_	t
 t |j¡|j¡ t
 t |j	¡|j¡ d S )	N)z2012-06-21 00:00ú2012-06-23 07:00ú2012-06-23 16:30ú2012-06-25 08:00ú2012-06-26 12:00)ru   rv   rw   rx   z2012-06-27 08:00)éM   éA   ry   r   ry   )ÚstartingÚendingÚmeasurer   ÚUTCr{   r|   )r   r   Úto_datetimer{   r9   rT   Ztz_localizeZ
tz_convertrD   r|   r#   Zassert_index_equalZDatetimeIndex)r   r   Zser_startingZ
ser_endingr   r   r   Útest_consolidate_datetime64   s0    ÿ	ÿ	íÿ



z7TestDataFrameBlockInternals.test_consolidate_datetime64c                 C   s   |j r
J ‚|j sJ ‚d S rq   )Z_is_mixed_type)r   r'   rW   r   r   r   Útest_is_mixed_typeM  s    
z.TestDataFrameBlockInternals.test_is_mixed_typec                 C   sž   t dd ƒ�€ ttj d¡ddd�}t|ƒ |d  d¡|d< tj|d d	< t|ƒ | ¡ }|d  ¡ }t 	|d d	 ¡s|J ‚W d   ƒ n1 s�0    Y  d S )
NZchained_assignment)rP   rP   ©ÚaÚbÚcÚd)Úerh   ÚgÚh)rT   re   r‡   rQ   rˆ   r…   )
r   r   r%   Úrandomrs   ZastypeÚNaNÚsumr   Úisna)r   ÚYrI   Úexpr   r   r   Ú test_stale_cached_series_bug_473Q  s    
ýz<TestDataFrameBlockInternals.test_stale_cached_series_bug_473c           	      C   sî   t ddgd�}tj|d< i }t t¡�Z t|jƒD ]>\}}tddƒD ]*}||vrbd||< tj||< ||| |< qDq2W d   ƒ n1 s†0    Y  d}t	|j
t || ¡|gf ƒ}t	|j
t || ¡|gf ƒ}||  krädksên J ‚d S )Nr   r   rS   éd   éÈ   )r   r%   rH   r#   rm   r   Ú	enumeraterT   r3   r-   Úlocr   r�   )	r   r   ZwasColÚiÚdtr@   ZmyidÚfirstÚsecondr   r   r   Ú$test_strange_column_corruption_issueb  s    

.z@TestDataFrameBlockInternals.test_strange_column_corruption_issuec                 C   sP   t g d¢ƒj}td|iƒ}tdg d¢iƒ}t ||¡ t|jjd tƒsLJ ‚d S )NrZ   r0   r   )	r   r_   r   r#   r$   Ú
isinstancer!   r.   r   )r   r`   rI   r(   r   r   r   Ú test_constructor_no_pandas_arrayv  s
    z<TestDataFrameBlockInternals.test_constructor_no_pandas_arrayc              	   C   sª   t g d¢g d¢dœƒ}tj tjg d¢td�¡|d< t g d¢g d¢tj tjg d¢td�¡dœƒ}t|d jj	d ƒt
ks~J ‚t|d jj	d ƒt
ksšJ ‚t ||¡ d S )	N)r   rB   r   rP   r‚   )rƒ   r„   )r   rB   Nr   r   r…   )rƒ   r„   r…   r   )r   r   ZarraysZPandasArrayr%   r_   rQ   Útyper!   r.   r   r#   r$   )r   r   Zdf2r   r   r   Ú!test_add_column_with_pandas_array  s    ýÿz=TestDataFrameBlockInternals.test_add_column_with_pandas_arrayN)Ú__name__Ú
__module__Ú__qualname__r   r)   r/   r8   r;   rA   rC   rJ   rY   ra   rp   rt   r€   r�   r�   r™   r›   r�   r   r   r   r   r   &   s$   		C-	r   c                  C   s^   t dtg d¢dd�iƒ} | d jddd� t| jjd jtƒsBJ ‚|  ¡  	¡  	¡ dksZJ ‚d S )	Nrƒ   )r   rB   NÚcategoryr   r   T)Zinplacer   )
r   r   Zfillnarš   r!   r.   r9   r   ZisnullrŒ   )r   r   r   r   Ú+test_update_inplace_sets_valid_block_values�  s    r¢   c                  C   sˆ   t ƒ } tdgtd�| d< tdgtd�| d< | d dk | | d dk  d| jd< t dgdgdœtd�}t | |¡ | jd dks„J ‚d S )	Nrƒ   r   Úcol1r   Úcol2r0   )r   r£   )r£   r¤   )r   r   rQ   Úatr#   r$   )r   r(   r   r   r   Ú$test_nonconsolidated_item_cache_take�  s    
r¦   ) r   r   rf   Únumpyr%   rk   Zpandas.errorsr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingr#   Zpandas.core.internalsr   r   Zskip_array_manager_invalid_testZ
pytestmarkr   r¢   r¦   r   r   r   r   Ú<module>   s   $	  k