U
    _{f<                     @   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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)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#S )$TestDataFrameBlockInternalsc                 C   sx   t dddd}|d }td|i}|d jjd ks6ttj|jd< |d jjd ksVt|jdksdt|d |ksttd S )	N20130101   
US/Eastern)periodstz   B)r   r   D)r	   r   Z_valuesfreqAssertionErrorpdZNaTZiloc)selfZdtitsdf r   f/var/www/html/Darija-Ai-API/env/lib/python3.8/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_internals7   s    z/TestDataFrameBlockInternals.test_cast_internalsc                 C   s   d|d< |  }t|jjdks$t|  }||k	s8tt|| d|d< t|jjdks`t| }|d ksttt|jjdkstd S )N      @Er   g       @Fr   )Z_consolidatelenr!   blocksr   r#   r$   Z_consolidate_inplace)r   r'   ZconsolidatedZreconsZreturn_valuer   r   r   test_consolidate@   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_inplaceQ   s    z4TestDataFrameBlockInternals.test_consolidate_inplacec              	   C   s   |rBt jtdd d|jd< W 5 Q R X |jd dk s>td S d|jd< |jd dk sbtd|d< |d }d|jd< |jd dk rt|dk std S )Nz	read-onlymatch   r*   r+         )pytestraises
ValueErrorvaluesallr   )r   r'   using_copy_on_writecolr   r   r   test_modify_valuesX   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   r2   r#   Zassert_almost_equal)r   r'   r(   r   r   r   test_boolean_set_unconsl   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dddd gi}|d }ttdddd g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      ?rF   y      ?       @r   g      @g       @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_convertu   sl      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st	|d
 jdkst	|j}ttdgd tdtdtdg t
dddd
g d}t|| d S )N  r   r;   rF   i  r   zdatetime64[ns]r   )dayssecondsr   M8[ns]zm8[ns]float64   objectztimedelta64[ns]ZABCDZfooindex)r   r%   rK   r   dtypesr   nowr   r    r   listr#   rJ   )r   float_string_framedatar   rL   r(   r   r   r   test_construction_with_mixed   s*     	z8TestDataFrameBlockInternals.test_construction_with_mixedc                 C   s   t jdddg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st|jd dkstttdd}t d|d< t jdddgdd|d< t|| d S )Nr   rF   r   ztimedelta64[s]r   rU   r0   z00:00:01s)r   r   r   )r   zM8[s])dt1dt2r^   rQ   r_   z
2013-01-01z
2013-01-02z
2013-01-03zdatetime64[D])r%   arrayr   r3   r   Ztimedelta_ranger#   Zassert_numpy_array_equalZto_numpyr   r	   astyperW   r   Z
datetime64r$   )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 |dddg W 5 Q R X t jtdd |d	 W 5 Q R X t jtdd |d
 W 5 Q R X d}t jt|d |d W 5 Q R X d S )Nc                 S   s2   t ttdddddfd}t|dddg| d	S )
NrN   r   Zaa   	   r0   r   C)r[   columnsr    )rY   	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 constructorr9   )r0   zdatetime64[h])r   str)rf   r&   zargument must berI   rR   zD^Unknown datetime string format, unable to parse: aa, at position 0$rQ   )r>   r?   NotImplementedError	TypeErrorr@   )r   rj   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   rZ   Ztimezone_frameZempty_frameZ	unpickledr   r   r   test_pickle  s    


z'TestDataFrameBlockInternals.test_picklec              	   C   s   t tdddddgtdddddgdddd	dg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 )Nz2012-06-21 00:00z2012-06-23 07:00z2012-06-23 16:30z2012-06-25 08:00z2012-06-26 12:00z2012-06-27 08:00M   A   r   )startingendingmeasurer   UTCrv   rw   )r   r   to_datetimerv   rA   rV   Ztz_localizeZ
tz_convertrH   rw   r#   Zassert_index_equalZDatetimeIndex)r   r   Zser_startingZ
ser_endingr   r   r   test_consolidate_datetime64   sD    		



z7TestDataFrameBlockInternals.test_consolidate_datetime64c                 C   s   |j r
t|j std S rp   )Z_is_mixed_typer   )r   r'   rZ   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< |rdt  tj|d d	< W 5 Q R X ntj|d d	< t| |	 }|d 	 }|rt
|d d	 rtnt
|d d	 stW 5 Q R X d S )
NZchained_assignment)rS   rS   )abcd)erj   gh)rV   rg   r   rT   r   r   )r
   r   r%   randomrr   ra   r#   Zraises_chained_assignment_errorNaNsumr   isnar   )r   rC   YrL   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d t|jD ]R\}}tddD ]>}||krbd||< tj||< |rv||j	||f< qD||| |< qDq2W 5 Q R X d}t
|j	t|| |gf }t
|j	t|| |gf }	||	  krdksn td S )Nr   r   rU   d      )r   r%   rK   r#   Zassert_produces_warningr   	enumeraterV   r3   locr-   r   r   r   )
r   rC   r   ZwasColidtrD   Zmyidfirstsecondr   r   r   $test_strange_column_corruption_issueh  s     

z@TestDataFrameBlockInternals.test_strange_column_corruption_issuec                 C   sT   t dddgj}td|i}tddddgi}t|| t|jjd tsPt	d S )Nr   rF   r   r0   r   )
r   r`   r   r#   r$   
isinstancer!   r.   r   r   )r   rb   rL   r(   r   r   r    test_constructor_no_pandas_array  s
    z<TestDataFrameBlockInternals.test_constructor_no_pandas_arrayc              
   C   s   t ddddgddddgd	}tjtjddd dgtd
|d< t ddddgddddgtjtjddd dgtd
d}t|d jj	d t
kstt|d jj	d t
kstt|| d S )Nr   rF   r   rS   r}   r~   r   r   )r}   r~   r   )r}   r~   r   r   )r   r   ZarraysZPandasArrayr%   r`   rT   typer!   r.   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   rE   rG   rM   r\   rc   ro   rs   r{   r|   r   r   r   r   r   r   r   r   r   %   s"   		C!-	r   c                 C   sd   t dtddd gddi}|d jddd t|jjd jtsDt| s`|	 
 
 dks`td S )	Nr}   r   rF   categoryr   T)Zinplacer   )r   r   Zfillnar   r!   r.   rA   r   r   Zisnullr   )rC   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std S )	Nr}   r   col1r   col2r0   )r   r   )r   r   )r   r   rT   atr#   r$   r   )r   r(   r   r   r   $test_nonconsolidated_item_cache_take  s    
r   )r   r   rh   numpyr%   r>   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.internalsr   r   Zskip_array_manager_invalid_testZ
pytestmarkr   r   r   r   r   r   r   <module>   s      u