o
    i;                     @   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 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    b/var/www/edux/Edux_v2/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   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int_seriestmassert_frame_equalnpint32)r   float_frame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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_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 )Nr0   r1   )r%   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 s(J |d |us0J |dk s8J d S )N   r0   r1         )rE   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 )Nr0   r1      r   )rE   r=   r(   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 )Nr;   l    )namel            i  r   Tg      ?rN   y      ?       @r   g      @)       @r   TNrR   i  )r   r   r*   asarrayint64r(   assert_series_equaluint64r   object_nanfloat_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sCJ |d
 jdksLJ |j}ttdgd tdtdtdg t	dg d d}t
|| d S )N  r   rH   rN   i  r   zdatetime64[ns]r   )dayssecondsr   M8[ns]zm8[ns]float64   objectztimedelta64[ns]ABCD)foor   r   index)r   r*   rX   r   dtypesr   nowr   r$   listr(   rU   )r   float_string_framedatar   r[   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   rN   r   ztimedelta64[s]r#   r   rf   r;   z00:00:01s)r   r   r   )r   )dt1dt2
2013-01-01rp   )rr   z
2013-01-02z
2013-01-03zdatetime64[D]rq   )r*   arrayr   r>   r   timedelta_ranger(   r)   r   r
   
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w   Y  d}tjt|d |d W d    n1 s;w   Y  tjt|d |d W d    n1 sVw   Y  t se|d	 d S d S )
Nc                 S   s0   t ttdddddfd}t|g d| dS )Nr]   r   aa   	   )r;   r   C)rl   columnsr$   )rj   	itertoolsrepeatr   r   )r$   rl   r    r    r!   f   s   zGTestDataFrameBlockInternals.test_constructor_compound_dtypes.<locals>.fz@compound dtypes are not implemented in the DataFrame constructor)match))r;   zdatetime64[h])r   str)r{   r+   zBeither all columns will be cast to that dtype, or a TypeError willrT   ra   r`   )pytestraisesNotImplementedErrorr(   assert_produces_warningFutureWarningr	   is_platform_windows)r   r   msg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(   round_trip_pickler)   r%   ndimrepr)r   rk   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   rE   rg   tz_localize
tz_convertrQ   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,   rk   r    r    r!   test_is_mixed_typeM  s   
z.TestDataFrameBlockInternals.test_is_mixed_typec                 C   s   t dd W ttjdddd}t| |d d|d< tj|d d	< t| | }|d  }|rAt	|d d	 r@J nt	|d d	 sLJ W d    d S W d    d S 1 s_w   Y  d S )
Nchained_assignment)rb   rb   abcd)er   gh)rg   r|   r   rc   r   r   )
r   r   r*   randomr   astypeNaNsumr   isna)r   using_copy_on_writeYr[   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7 t|jD ])\}}tddD ]}||vr1d||< tj||< |r;||j	||f< q"||| |< q"qW d    n1 sMw   Y  d}t
|j	t|| |gf }t
|j	t|| |gf }	||	  kr}dksJ  J d S )Nr   r   rf   d      )r   r*   rX   r(   r   r   	enumeraterg   r>   locr4   r   r   )
r   r   r   wasColidtrL   myidfirstsecondr    r    r!   $test_strange_column_corruption_issuee  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s&J d S )Nrn   r;   r   )	r   rs   r   r(   r)   
isinstancer%   r5   r   )r   rv   r[   r.   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 t|d jj	d t
ksMJ t|| d S )	N)r   rN   r   rb   r   )r   r   )r   rN   Nr   r#   r   )r   r   r   r   )r   r   arraysPandasArrayr*   rs   rc   typer%   r5   r   r(   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"   r/   r:   rC   rG   rM   rP   r\   rm   rw   r   r   r   r   r   r   r   r   r    r    r    r!   r   &   s&    		C-	r   c                 C   sf   t dtg dddi}|d jddd t|jjd jts!J | s/| 	 	 dks1J d S d S )	Nr   )r   rN   Ncategoryr#   r   T)inplacer   )
r   r   fillnar   r%   r5   rE   r   isnullr   )r   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   rc   atr(   r)   )r   r.   r    r    r!   $test_nonconsolidated_item_cache_take  s   
r   ) r   r   r}   numpyr*   r   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   r   r	   r
   r   pandas._testing_testingr(   pandas.core.internalsr   r   skip_array_manager_invalid_test
pytestmarkr   r   r   r    r    r    r!   <module>   s     $	  q