o
    �¨Êh0@  ã                   @   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 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)Ú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 sJ ‚tj|jd< |d jjd u s+J ‚|jdks2J ‚|d |ks:J ‚d S )	NÚ20130101é   ú
US/Eastern)ÚperiodsÚtzé   ÚB)r   r   ÚD)r	   r   Ú_valuesÚfreqÚpdÚNaTÚiloc)ÚselfÚdtiÚtsÚdf© r   úY/var/www/html/env/lib/python3.10/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 sw   Y  t|jtd�}t  ||¡ t jt|dd�� t|jtj	d�}W d   ƒ n1 sIw   Y  t|jtj	d�}t  ||¡ d S )Nz#Passing a BlockManager to DataFrameF)ÚmatchÚcheck_stacklevel©Údtype)
ÚtmÚassert_produces_warningÚDeprecationWarningr   Ú_mgrÚintÚ_seriesÚassert_frame_equalÚnpÚint32)r   Úfloat_frameÚmsgÚcastedÚexpectedr   r   r   Útest_cast_internals4   s   ÿýÿýz/TestDataFrameBlockInternals.test_cast_internalsc                 C   sŒ   d|d< |  ¡ }t|jjƒdksJ ‚|  ¡ }||usJ ‚t ||¡ d|d< t|jjƒdks0J ‚| ¡ }|d u s:J ‚t|jjƒdksDJ ‚d S )Nç      @ÚEr   g       @ÚFr   )Ú_consolidateÚlenr(   Úblocksr%   r+   Ú_consolidate_inplace)r   r.   ÚconsolidatedÚreconsÚreturn_valuer   r   r   Útest_consolidateD   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_inplaceU   s   ÿz4TestDataFrameBlockInternals.test_consolidate_inplacec                 C   sº   |r+t jtdd�� d|jd< W d   ƒ n1 sw   Y  |jd dk ¡ s)J ‚d S d|jd< |jd dk ¡ s;J ‚d|d< |d }d|jd< |jd dk ¡ rSJ ‚|dk ¡ s[J ‚d S )Nz	read-only©r!   é   r3   r4   é   é   )ÚpytestÚraisesÚ
ValueErrorÚvaluesÚall)r   r.   Úusing_copy_on_writeÚcolr   r   r   Útest_modify_valuesZ   s   ÿ

z.TestDataFrameBlockInternals.test_modify_valuesc                 C   s<   d|d< |j  ¡ }d||dk< d||dk< t ||j ¡ d S )Nr3   r4   é   r   )rL   Úcopyr%   Úassert_almost_equal)r   r.   r1   r   r   r   Útest_boolean_set_unconsn   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 )Nr>   l   ÿÿÿÿ )Únamel            iÕ  r   Tg      ð?rQ   y      ð?       @r   g      @)ç       @r   TNrV   iÖ  )r   r   r,   ÚasarrayÚint64r%   Úassert_series_equalÚuint64r   Úobject_ÚnanÚfloat64Ú
complex128)r   r   Úresultr1   r   r   r   Útest_constructor_with_convertw   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sCJ ‚|d
 jdksLJ ‚|j}tt d¡gd |s^t d¡ndt d¡t d¡g t	dƒg d¢ d�}t
 ||¡ d S )NéÑ  r   rF   rQ   iÐ  r   zdatetime64[us]r   )ÚdaysÚsecondsr   zM8[us]zm8[us]r]   é   ÚobjectÚstringztimedelta64[us]ÚABCD)Úfoor   r   ©Úindex)r   r,   r\   r   Údtypesr   Únowr   r$   Úlistr%   rY   )r   Úfloat_string_frameÚusing_infer_stringÚdatar   r_   r1   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 |d  ¡ |¡ tt	d
ƒt
d
dd� d¡dœtdƒd�}|jd dksKJ ‚|jd dksTJ ‚ttdƒd�}t  d¡|d< t jg d¢dd�|d< t ||¡ d S )N©r   rQ   r   ztimedelta64[s]r#   r   ri   r>   z00:00:01Ús)r   r   r   )r   zM8[s])Údt1Údt2rt   ru   ú
2013-01-01)rv   z
2013-01-02z
2013-01-03zdatetime64[D])r,   Úarrayr   r@   r   Útimedelta_ranger%   Úassert_numpy_array_equalÚto_numpyr   r	   Úastyperk   Ú
datetime64r+   )r   Úarrr   r1   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w   Y  t jtdd�� |dƒ W d   ƒ n1 s9w   Y  t jtdd�� |dƒ W d   ƒ n1 sTw   Y  d	}t jt|d�� |d
ƒ W d   ƒ d S 1 srw   Y  d S )Nc                 S   s0   t t tdddƒddfd¡ƒ}t|g d¢| d�S )Nra   r   Úaaé   é	   )r>   r   ÚC)rp   Úcolumnsr$   )rm   Ú	itertoolsÚrepeatr   r   )r$   rp   r   r   r   Úf   s   zGTestDataFrameBlockInternals.test_constructor_compound_dtypes.<locals>.fz@compound dtypes are not implemented in the DataFrame constructorrE   ))r>   zdatetime64[h])r   Ústr)r‚   r-   zargument must berX   r]   zD^Unknown datetime string format, unable to parse: aa, at position 0$zM8[ns])rI   rJ   ÚNotImplementedErrorÚ	TypeErrorrK   )r   r†   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%   Úround_trip_pickler+   r(   ÚndimÚrepr)r   rn   Útimezone_frameÚempty_frameÚ	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)r“   r”   r•   r–   z2012-06-27 08:00)éM   éA   r—   r   r—   )ÚstartingÚendingÚmeasurer   ÚUTCr™   rš   )r   r   Úto_datetimer™   rL   rj   Útz_localizeÚ
tz_convertrU   rš   r%   Úassert_index_equalÚDatetimeIndex)r   r   Úser_startingÚ
ser_endingr   r   r   Útest_consolidate_datetime64$  s0   ÿ	ÿ	íÿ



z7TestDataFrameBlockInternals.test_consolidate_datetime64c                 C   s   |j rJ ‚|j s
J ‚d S r‹   )Ú_is_mixed_type)r   r.   rn   r   r   r   Útest_is_mixed_typeQ  s   
z.TestDataFrameBlockInternals.test_is_mixed_typec              	   C   sú   t dd ƒ�n ttj d¡ d¡ddd�}t|ƒ |d  d¡|d< t ¡ � tj	|d	 d
< W d   ƒ n1 s7w   Y  t|ƒ | 
¡  |d	  
¡  |rXt |d	 d
 ¡rWJ ‚nt |d	 d
 ¡scJ ‚W d   ƒ d S W d   ƒ d S 1 svw   Y  d S )NÚchained_assignmentrQ   )rd   rd   ©ÚaÚbÚcÚd)Úer†   ÚgÚh)rj   rƒ   r­   re   r®   r«   )r
   r   r,   ÚrandomÚdefault_rngrŽ   r{   r%   Úraises_chained_assignment_errorr\   Úsumr   Úisna)r   rN   Úwarn_copy_on_writeÚYr   r   r   Ú test_stale_cached_series_bug_473U  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��7 t|jƒD ])\}}tddƒD ]}||vr3d||< tj||< |r=||j	||f< q$||| |< q$qW d   ƒ n1 sOw   Y  d}t
|j	t || ¡|gf ƒ}t
|j	t || ¡|gf ƒ}	||	  krdks‚J ‚ J ‚d S )Nr   r   ri   F)Úraise_on_extra_warningséd   éÈ   )r   r,   r\   r%   r&   r   Ú	enumeraterj   r@   Úlocr7   r   r´   )
r   rN   r   ÚwasColÚiÚdtrO   ÚmyidÚfirstÚsecondr   r   r   Ú$test_strange_column_corruption_issuei  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ƒs&J ‚|jjd j	s/J ‚d S )Nrr   r>   r   )
r   rw   r   r%   r+   Ú
isinstancer(   r8   r   Ú
is_numeric)r   r}   r_   r1   r   r   r   Ú test_constructor_no_pandas_arrayƒ  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sJJ ‚t|d jj	d ƒt
ksXJ ‚|d jj	d jscJ ‚t ||¡ d S )	N)r   rQ   r   rd   r¨   )r©   rª   )r   rQ   Nr   r#   r«   )r©   rª   r«   r   )r   r   ÚarraysÚNumpyExtensionArrayr,   rw   re   Útyper(   r8   r   Ú	is_objectr%   r+   )r   r   Údf2r   r   r   Ú!test_add_column_with_pandas_array�  s   ÿýÿ	z=TestDataFrameBlockInternals.test_add_column_with_pandas_arrayN)Ú__name__Ú
__module__Ú__qualname__r    r2   r=   rD   rP   rT   r`   rq   r~   rŠ   r’   r¤   r¦   r·   rI   ÚmarkÚfilterwarningsrÃ   rÆ   rÌ   r   r   r   r   r   "   s&    	C#-


r   c                 C   sÔ   t dtg d¢dd�iƒ}| r,t ¡ � |d jddd� W d   ƒ n1 s&w   Y  n tjtdd	�� |d jddd� W d   ƒ n1 sGw   Y  t|jj	d
 j
tƒsXJ ‚| sf| ¡  ¡  ¡ d
kshJ ‚d S d S )Nr©   )r   rQ   NÚcategoryr#   r   T)Úinplacezinplace methodrE   r   )r   r   r%   r²   Úfillnar&   ÚFutureWarningrÄ   r(   r8   rL   r   Úisnullr³   )rN   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sBJ ‚d S )	Nr©   r#   Úcol1r   Úcol2r>   )r   rØ   )rØ   rÙ   )r   r   re   Úatr%   r+   )r   r1   r   r   r   Ú$test_nonconsolidated_item_cache_takeµ  s   
rÛ   )r   r   r„   Únumpyr,   rI   Úpandas.errorsr   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsÚtdÚpandasr   r   r   r   r   r	   r
   Úpandas._testingÚ_testingr%   Úpandas.core.internals.blocksr   Úskip_array_manager_invalid_testÚ
pytestmarkr   r×   rÛ   r   r   r   r   Ú<module>   s"        