a
    é´«jd?  ã                   @   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	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 d dlmZ d dlmZ ejZG dd„ dƒZd	d
„ Zdd„ ZdS )é    )ÚdatetimeÚ	timedeltaN)ÚWARNING_CHECK_DISABLED)ÚPerformanceWarning)ÚCategoricalÚ	DataFrameÚSeriesÚ	TimestampÚ
date_rangeÚoption_context)Ú
NumpyBlockc                   @   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ej d¡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   úf/var/www/html/laksyashrimp/venv/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   s¼   d}t jt|dd�� t|jtd�}W d   ƒ n1 s80    Y  t|jtd�}t  ||¡ t jt|dd��  t|jtj	d�}W d   ƒ n1 s’0    Y  t|jtj	d�}t  ||¡ d S )Nz#Passing a BlockManager to DataFrameF)ÚmatchZcheck_stacklevel©Údtype)
ÚtmÚassert_produces_warningÚDeprecationWarningr   Ú_mgrÚintZ_seriesÚassert_frame_equalÚnpÚint32)r   Úfloat_frameÚmsgZcastedÚexpectedr   r   r   Útest_cast_internals5   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_consolidateE   s    z,TestDataFrameBlockInternals.test_consolidatec                 C   s,   t tdƒtdƒƒD ]}t|ƒ|t|ƒ< qd S )NÚAÚZ)ÚrangeÚordÚchr)r   r)   Úletterr   r   r   Útest_consolidate_inplaceV   s    z4TestDataFrameBlockInternals.test_consolidate_inplacec                 C   sº   |rVt jtdd�� d|jd< W d   ƒ n1 s20    Y  |jd dk ¡ sRJ ‚d S d|jd< |jd dk ¡ svJ ‚d|d< |d }d|jd< |jd dk ¡ r¦J ‚|dk ¡ s¶J ‚d S )Nz	read-only©r   é   r-   r.   é   é   )ÚpytestÚraisesÚ
ValueErrorÚvaluesÚall)r   r)   Úusing_copy_on_writeÚ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   )rA   Úcopyr!   Zassert_almost_equal)r   r)   r+   r   r   r   Útest_boolean_set_unconso   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 )Nr3   l   ÿÿÿÿ )Únamel            iÕ  r   Tg      ð?rF   y      ð?       @r   g      @)ç       @r   TNrJ   iÖ  )r   r   r'   ZasarrayÚint64r!   Úassert_series_equalZuint64r   Zobject_ÚnanÚfloat64Z
complex128)r   r   Úresultr+   r   r   r   Útest_constructor_with_convertx   sh    ÿÿz9TestDataFrameBlockInternals.test_constructor_with_convertc                 C   s¨   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 |sdt d	¡ntjtj	d
�t d¡t d¡g t
dƒg d¢ d�}t ||¡ d S )Nr   r   )ÚdaysÚsecondsr   zM8[us]zm8[us]rN   é   Úobject)Zna_valuezdatetime64[us]ztimedelta64[us]ÚABCD)Zfoor   r   ©Úindex)r   Únowr   r    Údtypesr   r'   r   ZStringDtyperM   Úlistr!   rL   )r   Úfloat_string_frameZusing_infer_stringrO   r+   r   r   r   Útest_construction_with_mixed»   s"    ÿûÿ÷z8TestDataFrameBlockInternals.test_construction_with_mixedc                 C   sØ   t jg d¢dd�}td|iƒ}tdtjdddd�itdƒd	�}t |d  ¡ |¡ tt	d
ƒt
d
dd� d¡dœtdƒd	�}|jd dksŒJ ‚|jd dksžJ ‚t  d¡}t jg d¢dd�}t||dœƒ}t ||¡ d S )N©r   rF   r   ztimedelta64[s]r   r3   z00:00:01r   Ús)r   r   rV   r   )r   zM8[s])Údt1Údt2r_   r`   ú
2013-01-01)ra   z
2013-01-02z
2013-01-03zdatetime64[D])r'   Úarrayr   r   Ztimedelta_ranger5   r!   Zassert_numpy_array_equalZto_numpyr	   r
   ÚastyperY   Z
datetime64r&   )r   Úarrr   r+   r_   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  t jtdd�� |dƒ W d   ƒ n1 sr0    Y  t jtdd�� |dƒ W d   ƒ n1 s¨0    Y  d	}t jt|d�� |d
ƒ W d   ƒ n1 sâ0    Y  d S )Nc                 S   s0   t t tdddƒddfd¡ƒ}t|g d¢| d�S )NiÑ  r   Zaaé   é	   )r3   r   ÚC)ÚdataÚcolumnsr    )rZ   Ú	itertoolsÚrepeatr   r   )r    ri   r   r   r   Úfõ   s    zGTestDataFrameBlockInternals.test_constructor_compound_dtypes.<locals>.fz@compound dtypes are not implemented in the DataFrame constructorr:   ))r3   zdatetime64[h])r   Ústr)rh   r(   zargument must berK   rN   zD^Unknown datetime string format, unable to parse: aa, at position 0$zM8[ns])r>   r?   ÚNotImplementedErrorÚ	TypeErrorr@   )r   rm   r*   r   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   r[   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)rv   rw   rx   ry   z2012-06-27 08:00)éM   éA   rz   r   rz   )ÚstartingÚendingÚmeasurer   ÚUTCr|   r}   )r   r   Úto_datetimer|   rA   rW   Ztz_localizeZ
tz_convertrI   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 rr   )Z_is_mixed_type)r   r)   r[   r   r   r   Útest_is_mixed_typeF  s    
z.TestDataFrameBlockInternals.test_is_mixed_typec              	   C   sè   t dd ƒ�Ê ttj d¡ d¡ddd�}t|ƒ |d  d¡|d< t ¡ � tj	|d	 d
< W d   ƒ n1 sn0    Y  t|ƒ | 
¡  |d	  
¡  |r°t |d	 d
 ¡rÆJ ‚nt |d	 d
 ¡sÆJ ‚W d   ƒ n1 sÚ0    Y  d S )NZchained_assignmentrF   )rS   rS   ©ÚaÚbÚcÚd)Úerm   ÚgÚh)rW   rj   rˆ   rT   r‰   r†   )r   r   r'   ÚrandomZdefault_rngrt   rc   r!   Úraises_chained_assignment_errorrM   Úsumr   Úisna)r   rC   Zwarn_copy_on_writeÚYr   r   r   Ú test_stale_cached_series_bug_473J  s     ý
,z<TestDataFrameBlockInternals.test_stale_cached_series_bug_473z.ignore:Setting a value on a view:FutureWarningc           
      C   s  t ddgd�}tj|d< i }tjtdd��n t|jƒD ]R\}}tddƒD ]>}||vrfd||< tj||< |rz||j	||f< qH||| |< qHq6W 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   rV   F)Zraise_on_extra_warningséd   éÈ   )r   r'   rM   r!   r"   r   Ú	enumeraterW   r5   Úlocr0   r   rŽ   )
r   rC   r   ZwasColÚiÚdtrD   ZmyidÚfirstÚsecondr   r   r   Ú$test_strange_column_corruption_issue^  s$    
ÿ
.z@TestDataFrameBlockInternals.test_strange_column_corruption_issuec                 C   sb   t g d¢ƒj}td|iƒ}tdg d¢iƒ}t ||¡ t|jjd tƒsLJ ‚|jjd j	s^J ‚d S )Nr]   r3   r   )
r   rb   r   r!   r&   Ú
isinstancer$   r1   r   Z
is_numeric)r   rd   rO   r+   r   r   r   Ú test_constructor_no_pandas_arrayx  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 ‚|d jj	d js”J ‚t|d jj	d ƒt
ks°J ‚|d jj	d jsÆJ ‚t ||¡ d S )	N)r   rF   r   rS   rƒ   )r„   r…   )r   rF   Nr   r   r†   )r„   r…   r†   r   )r   r   ZarraysZNumpyExtensionArrayr'   rb   rT   Útyper$   r1   r   Z	is_objectr!   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,   r2   r9   rE   rH   rP   r\   re   rq   ru   r�   r‚   r�   r>   ÚmarkÚfilterwarningsr™   r›   r�   r   r   r   r   r   #   s$   	C"-


r   c                 C   sØ   t dtg d¢dd�iƒ}| rXt ¡ �" |d jddd� W d   ƒ q 1 sL0    Y  nHtjtsdtnd dd	��" |d jddd� W d   ƒ n1 s–0    Y  t|j	j
d
 jtƒs¸J ‚| sÔ| ¡  ¡  ¡ d
ksÔJ ‚d S )Nr„   )r   rF   NÚcategoryr   r   T)Zinplacezinplace methodr:   r   )r   r   r!   rŒ   Zfillnar"   r   ÚFutureWarningrš   r$   r1   rA   r   Zisnullr�   )rC   r   r   r   r   Ú+test_update_inplace_sets_valid_block_values–  s    
2
þ0r¥   c                  C   s”   t dtdgtd�iƒ} tdgtd�| d< | j ¡ r6J ‚| 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 )	NÚcol1r„   r   r   Úcol2r3   )r   r¦   )r¦   r§   )r   r   rT   r$   Zis_consolidatedÚatr!   r&   )r   r+   r   r   r   Ú$test_nonconsolidated_item_cache_take­  s    ÿÿ
r©   ) r   r   rk   Únumpyr'   r>   Zpandas.compatr   Zpandas.errorsr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr   r   r   r   r	   r
   r   Zpandas._testingZ_testingr!   Zpandas.core.internals.blocksr   Zskip_array_manager_invalid_testZ
pytestmarkr   r¥   r©   r   r   r   r   Ú<module>   s       u