o
    Û­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 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   úd/var/www/html/CropPilot/venv/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_internals5   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_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º   |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"   é   r4   r5   é   é   )Ú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 )Nr4   r5   é   r   )rM   Úcopyr&   Úassert_almost_equal)r   r/   r2   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 )Nr?   l   ÿÿÿÿ )Únamel            iÕ  r   Tg      ð?rR   y      ð?       @r   g      @)ç       @r   TNrW   iÖ  )r   r   r-   ÚasarrayÚint64r&   Úassert_series_equalÚuint64r   Úobject_ÚnanÚfloat64Ú
complex128)r   r   Úresultr2   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 |s2t 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]r^   é   Úobject)Úna_valuezdatetime64[us]ztimedelta64[us]ÚABCD)Úfoor   r   ©Úindex)r   Únowr   r%   Údtypesr   r-   r   ÚStringDtyper]   Úlistr&   rZ   )r   Úfloat_string_frameÚusing_infer_stringr`   r2   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sFJ ‚|jd dksOJ ‚t  d¡}t jg d¢dd�}t||dœƒ}t ||¡ d S )N©r   rR   r   ztimedelta64[s]r$   r?   z00:00:01r   Ús)r   r   ri   r   )r   zM8[s])Údt1Údt2rt   ru   ú
2013-01-01)rv   z
2013-01-02z
2013-01-03zdatetime64[D])r-   Úarrayr   r   Útimedelta_rangerA   r&   Úassert_numpy_array_equalÚto_numpyr	   r
   Úastyperl   Ú
datetime64r,   )r   Úarrr   r2   rt   ru   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 )NiÑ  r   Úaaé   é	   )r?   r   ÚC)ÚdataÚcolumnsr%   )rn   Ú	itertoolsÚrepeatr   r   )r%   rƒ   r   r   r    Úfõ   s   zGTestDataFrameBlockInternals.test_constructor_compound_dtypes.<locals>.fz@compound dtypes are not implemented in the DataFrame constructorrF   ))r?   zdatetime64[h])r   Ústr)r‚   r.   zargument must berY   r^   zD^Unknown datetime string format, unable to parse: aa, at position 0$zM8[ns])rJ   rK   ÚNotImplementedErrorÚ	TypeErrorrL   )r   r‡   r0   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   ro   Ú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š   rM   rj   Útz_localizeÚ
tz_convertrV   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/   ro   r   r   r    Útest_is_mixed_typeF  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_assignmentrR   )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   rO   Ú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��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   rA   Úlocr8   r   rµ   )
r   rO   r   ÚwasColÚiÚdtrP   Ú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ƒs&J ‚|jjd j	s/J ‚d S )Nrr   r?   r   )
r   rw   r   r&   r,   Ú
isinstancer)   r9   r   Ú
is_numeric)r   r}   r`   r2   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sJJ ‚t|d jj	d ƒt
ksXJ ‚|d jj	d jscJ ‚t ||¡ d S )	N)r   rR   r   rd   r©   )rª   r«   )r   rR   Nr   r$   r¬   )rª   r«   r¬   r   )r   r   ÚarraysÚNumpyExtensionArrayr-   rw   re   Útyper)   r9   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!   r3   r>   rE   rQ   rU   ra   rq   r~   r‹   r“   r¥   r§   r¸   rJ   Ú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s2tnd dd	�� |d jddd� W d   ƒ n1 sKw   Y  t|j	j
d
 jtƒs\J ‚| sj| ¡  ¡  ¡ d
kslJ ‚d S d S )Nrª   )r   rR   NÚcategoryr$   r   T)Úinplacezinplace methodrF   r   )r   r   r&   r³   Úfillnar'   r   ÚFutureWarningrÅ   r)   r9   rM   r   Úisnullr´   )rO   r   r   r   r    Ú+test_update_inplace_sets_valid_block_values–  s"   
ÿ€
þüþrØ   c                  C   s”   t dtdgtd�iƒ} tdgtd�| d< | j ¡ rJ ‚| d dk | | d dk  d| jd< t dgdgdœtd�}t | |¡ | jd dksHJ ‚d S )	NÚcol1rª   r$   r   Úcol2r?   )r   rÙ   )rÙ   rÚ   )r   r   re   r)   Úis_consolidatedÚatr&   r,   )r   r2   r   r   r    Ú$test_nonconsolidated_item_cache_take­  s   ÿÿ
rÝ   ) r   r   r…   Únumpyr-   rJ   Úpandas.compatr   Ú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"       u