
    ^i@                        d dl m Z mZ d dlmZ d dlZd dlmZ d dlZd dl	Z	d dl
mZ d dlmc 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  G d d	          Zd
 Zd Zej         e	j!        j"        d                         Z#dS )    )datetime	timedelta)StringION)dedent)Pandas4Warning)Categorical	DataFrameSeries	Timestamp
date_rangeoption_context)
NumpyBlockc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestDataFrameBlockInternalsc                 
   t          ddd          }|d         }t          d|i          }|d         j        j        J t          j        |j        d<   |d         j        j        J |j        dk    sJ |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dfs       R/usr/local/lib/python3.11/dist-packages/pandas/tests/frame/test_block_internals.py,test_setitem_invalidates_datetime_index_freqzHTestDataFrameBlockInternals.test_setitem_invalidates_datetime_index_freq    s     Q<@@@VSz""#w#+++#w#+++ x31v||||||    c                    d}t          j        t          |d          5  t          |j        t
                    }d d d            n# 1 swxY w Y   t          |j        t
                    }t          j        ||           t          j        t          |d          5  t          |j        t          j	                  }d d d            n# 1 swxY w Y   t          |j        t          j	                  }t          j        ||           d S )Nz#Passing a BlockManager to DataFrameF)matchcheck_stackleveldtype)
tmassert_produces_warningr   r	   _mgrint_seriesassert_frame_equalnpint32)r   float_framemsgcastedexpecteds        r#   test_cast_internalsz/TestDataFrameBlockInternals.test_cast_internals1   s   3'#
 
 
 	< 	< {/s;;;F	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< [0<<<
fh///'#
 
 
 	A 	A {/rx@@@F	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A [0AAA
fh/////s#   AAA!CCCc                    d|d<   |                                 }t          |j        j                  dk    sJ |                                 }||usJ t	          j        ||           d|d<   t          |j        j                  dk    sJ |                                }|J t          |j        j                  dk    sJ d S )N      @Er   g       @Fr   )_consolidatelenr-   blocksr+   r0   _consolidate_inplace)r   r3   consolidatedreconsreturn_values        r#   test_consolidatez,TestDataFrameBlockInternals.test_consolidateA   s    C"//11<$+,,1111 **,,\))))
fl333C;#*++q0000"7799###;#*++q000000r%   c                     t          t          d          t          d                    D ]!}t          |          |t          |          <   "d S )NAZ)rangeordchr)r   r3   letters      r#   test_consolidate_inplacez4TestDataFrameBlockInternals.test_consolidate_inplaceR   sJ    CHHc#hh// 	3 	3F'*6{{KF$$	3 	3r%   c                     t          j        t          d          5  d|j        d<   d d d            n# 1 swxY w Y   |j        d         dk                                    sJ d S )Nz	read-onlyr'      )pytestraises
ValueErrorvaluesall)r   r3   s     r#   test_modify_valuesz.TestDataFrameBlockInternals.test_modify_valuesW   s    ]:[999 	& 	&$%Kq!	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&"1%*//1111111s   377c                     d|d<   |j                                         }d||dk    <   d||dk    <   t          j        ||j                    d S )Nr9   r:      r   )rR   copyr+   assert_almost_equal)r   r3   r6   s      r#   test_boolean_set_unconsz3TestDataFrameBlockInternals.test_boolean_set_uncons\   sX    C%**,,!"A'(K!O$
x);<<<<<r%   c                 	   t          ddgi          }|d         }t          t          j        dgt          j                  d          }t          j        ||           t          ddgi          }|d         }t          t          j        dgt          j                  d          }t          j        ||           t          dt          ddd          dgi          }|d         }t          t          j        t          ddd          dgt          j	                  d          }t          j        ||           t          dd dgi          }|d         }t          t          j        t          j
        dgt          j                  d          }t          j        ||           t          ddd	gi          }|d         }t          t          j        dd	gt          j                  d          }t          j        ||           t          dd
dgi          }|d         }t          t          j        d
dgt          j                  d          }t          j        ||           t          dd
dgi          }|d         }t          t          j        d
dgt          j                  d          }t          j        ||           t          dd
dgi          }|d         }t          t          j        d
dgt          j	                  d          }t          j        ||           t          ddd gi          }|d         }t          t          j        dt          j
        gt          j                  d          }t          j        ||           t          dd
d gi          }|d         }t          t          j        d
t          j
        gt          j                  d          }t          j        ||           t          dg di          }|d         }t          t          j        g dt          j	                  d          }t          j        ||           t          dddt          ddd          d gi          }|d         }t          t          j        ddt          ddd          d gt          j	                  d          }t          j        ||           d S )NrE   l    )namel            i  r   Tg      ?rV   y      ?       @r   g      @)       @r   TNr\   i  )r	   r
   r1   asarrayint64r+   assert_series_equaluint64r   object_nanfloat64
complex128)r   r"   resultr6   s       r#   test_constructor_with_convertz9TestDataFrameBlockInternals.test_constructor_with_converte   si    i[)**C"*i["(;;#FFF
vx000eW~&&C"*eWbi88sCCC
vx000htQ22D9:;;CJq!,,d3RZ@@s
 
 
 	vx000dAY'((C"*bfa["*==CHHH
vx000c1X''C"*c1Xrz::EEE
vx000j!_-..C"*j!_bmDD3OOO
vx000j#./00C"*j#%6FFSQQQ
vx000j$/011C"*j$%7DD3OOO
vx000c4[)**C"*c26]BJ??cJJJ
vx000j$/011C"*j"&%92=IIPSTTT
vx000111233C"*%9%9%92:FFSQQQ
vx000c1htQ&:&:DABCCCJQq! 4 4d;RZHHs
 
 
 	vx00000r%   c                    t          j                    |d<   t          dd          |d<   |d         j        dk    sJ |d         j        dk    sJ |j        }t          t          j        d          gdz  |st          j        d	          nt          j        t          j	        
          t          j        d          t          j        d          gz   g t          d          ddd          }t          j        ||           d S )Nr   r   )dayssecondsr   zM8[us]zm8[us]rc      object)na_valuezdatetime64[us]ztimedelta64[us]ABCDfooindex)r   nowr   r*   dtypesr
   r1   r   StringDtyperb   listr+   r_   )r   float_string_frameusing_infer_stringre   r6   s        r#   test_construction_with_mixedz8TestDataFrameBlockInternals.test_construction_with_mixed   s   )1:&*3A*F*F*F;'!*-3x????!+.4@@@@#*Xi  !A% *5"""^RV444)***++ BDLLA%AA[A

 

 

 	vx00000r%   c                    t          j        g dd          }t          d|i          }t          dt          j        ddd          it          d          	          }t          j        |d                                         |           t          t          d
          
                    d          t          d
d                              d          dt          d          	          }|j        d         dk    sJ |j        d         dk    sJ t          j        d          }t          j        g dd          }t          ||d          }t          j        ||           d S )Nr   rV   r   ztimedelta64[s]r)   rE   z00:00:01r   s)r   r   ro   r   )r   zM8[s])dt1dt2r{   r|   
2013-01-01)r}   z
2013-01-02z
2013-01-03zdatetime64[D])r1   arrayr	   r   timedelta_rangerG   r+   assert_numpy_array_equalto_numpyr   as_unitr   astyperr   
datetime64r0   )r   arrr"   r6   r{   r|   s         r#   "test_construction_with_conversionsz>TestDataFrameBlockInternals.test_construction_with_conversions   s~    hyyy(8999Sz"""$ZEEEFeTUhh
 
 
 	#BsG$4$4$6$6<<< ,,44S99!*a888??HH  ((
 
 
 u%0000u%0000mL))h666o
 
 
 s3//00 	b(+++++r%   c                 
   d }d}t          j        t          |          5   |g d           d d d            n# 1 swxY w Y   t          j        t          d          5   |d           d d d            n# 1 swxY w Y   t          j        t          d          5   |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5   |d	           d d d            d S # 1 swxY w Y   d S )
Nc           	          t          t          j        t          ddd          ddfd                    }t	          |g d|           S )Ni  r   aa   	   )rE   r   C)datacolumnsr*   )rt   	itertoolsrepeatr   r	   )r*   r   s     r#   fzGTestDataFrameBlockInternals.test_constructor_compound_dtypes.<locals>.f   sH    	((4A*>*>b)I1MMNND$uMMMMr%   z@compound dtypes are not implemented in the DataFrame constructorrM   ))rE   zdatetime64[h])r   str)r   r2   zargument must ber^   rc   z5^Unknown datetime string format, unable to parse: aa$zM8[ns])rO   rP   NotImplementedError	TypeErrorrQ   )r   r   r4   s      r#    test_constructor_compound_dtypesz<TestDataFrameBlockInternals.test_constructor_compound_dtypes   s/   	N 	N 	N Q].c::: 	F 	FADDDEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F ]9,>??? 	 	AgJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,>??? 	 	AiLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 F]:S111 	 	AhKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sC   ;??!A99A= A=B77B;>B;C88C<?C<c                 r    t          j        ||          }t          j        ||           |j        j         d S N)r+   round_trip_pickler0   r-   ndim)r   ru   	temp_file	unpickleds       r#   test_pickle_float_string_framez:TestDataFrameBlockInternals.test_pickle_float_string_frame   s=    ();YGG	
0)<<< 	$$$$r%   c                 j    t                      }t          j        ||          }t          |           d S r   )r	   r+   r   repr)r   r   empty_framer   s       r#   test_pickle_emptyz-TestDataFrameBlockInternals.test_pickle_empty   s,    kk(i@@	Yr%   c                 Z    t          j        ||          }t          j        ||           d S r   )r+   r   r0   )r   timezone_framer   r   s       r#   test_pickle_empty_tz_framez6TestDataFrameBlockInternals.test_pickle_empty_tz_frame  s-    (CC	
ni88888r%   c                    t          t          j        g d          t          j        g d          g dd          }|j        }|j        |_        |                    d          }|                    d          }d|j        _        |j	        }|j        |_        |                    d          }|                    d          }d|j        _        |j        |_        |j        |_	        t          j        t          j        |j                  |j                   t          j        t          j        |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   rR   rp   tz_localize
tz_convertr[   r   r+   assert_index_equalDatetimeIndex)r   r"   ser_starting
ser_endings       r#   test_consolidate_datetime64z7TestDataFrameBlockInternals.test_consolidate_datetime64  sN    N    .    /..' 
 
0 {)0#//==#..u55",Y
%,
++L99
**511
 (
"($	
b.r{;;\=OPPP
b.ry99:;KLLLLLr%   c                 *    |j         rJ |j         sJ d S r   )_is_mixed_type)r   r3   ru   s      r#   test_is_mixed_typez.TestDataFrameBlockInternals.test_is_mixed_type2  s&    ----!000000r%   c                 v   t          dd           5  t          t          j                            d                              d          dd          }t          |           |d                             d          |d<   t          j                    5  t          j	        |d	         d
<   d d d            n# 1 swxY w Y   t          |           |
                                 |d	         
                                 t          j        |d	         d
                   rJ 	 d d d            d S # 1 swxY w Y   d S )Nchained_assignmentrV   )rj   rj   abcd)er   ghrp   r   r   rk   r   r   )r   r	   r1   randomdefault_rngr   r   r+   raises_chained_assignment_errorrb   sumr   isna)r   Ys     r#    test_stale_cached_series_bug_473z<TestDataFrameBlockInternals.test_stale_cached_series_bug_4736  s   0$77 	, 	,	%%a((//77*,  A
 GGGsV]]8,,AcF355 % % f#s% % % % % % % % % % % % % % %GGGEEGGGcFJJLLLwqvc{++++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s7   BD.B6*D.6B:	:D.=B:	>A"D..D25D2c                 F   t          ddg          }t          j        |d<   i }t          j        |d          5  t          |j                  D ]<\  }}t          dd          D ]&}||vrd||<   t          j        ||<   ||j        ||f<   '=	 d d d            n# 1 swxY w Y   d}t          |j        t          j        ||                   |gf                   }t          |j        t          j        ||                   |gf                   }	||	cxk    rdk    sn J d S )Nr   r   ro   F)raise_on_extra_warningsd      )r	   r1   rb   r+   r,   	enumeraterp   rG   locr=   r   r   )
r   performance_warningr"   wasColidtcolmyidfirstseconds
             r#   $test_strange_column_corruption_issuez@TestDataFrameBlockInternals.test_strange_column_corruption_issueG  s   aV$$$1'
 
 
 	( 	( #28,, ( (2 c?? ( (C&((&'s"$&3&'BF2s7OO	((	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( BF272d8,,tf4566RVBGBtH--v5677####!########s   ABB Bc                 $   t          g d          j        }t          d|i          }t          dg di          }t          j        ||           t          |j        j        d         t                    sJ |j        j        d         j	        sJ d S )Nry   rE   r   )
r
   r~   r	   r+   r0   
isinstancer-   r>   r   
is_numeric)r   r   re   r6   s       r#    test_constructor_no_pandas_arrayz<TestDataFrameBlockInternals.test_constructor_no_pandas_array]  s     YYY%C:&&c999-..
fh///&+,Q/<<<<<{!!$//////r%   c           
         t          g dg dd          }t          j                            t	          j        g dt                              |d<   t          g dg dt          j                            t	          j        g dt                              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          j        ||           d S )	N)r   rV   r   rj   r   )r   r   )r   rV   Nr   r)   r   )r   r   r   r   )r	   r   arraysNumpyExtensionArrayr1   r~   rk   typer-   r>   r   	is_objectr+   r0   )r   r"   df2s      r#   !test_add_column_with_pandas_arrayz=TestDataFrameBlockInternals.test_add_column_with_pandas_arrayg  sF   \\\0D0D0DEEFF)//PV0W0W0WXX3!\\)))Y22H___F;;;  
 
 BsGL'*++z9999#w|"1%////CHM(+,,
::::3x}#A&0000
b#&&&&&r%   N)__name__
__module____qualname__r$   r7   rC   rK   rT   rY   rf   rw   r   r   r   r   r   r   r   r   r   r   r    r%   r#   r   r      s:         "0 0 0 1 1 1"3 3 3
2 2 2
= = =A1 A1 A1F1 1 1( ,  ,  ,D  .% % %  
9 9 9+M +M +MZ1 1 1, , ,"$ $ $,0 0 0' ' ' ' 'r%   r   c                  2   t          dt          g dd          i          } t          j                    5  | d                             dd           d d d            n# 1 swxY w Y   t          | j        j        d         j        t                    sJ d S )	Nr   )r   rV   Ncategoryr)   r   T)inplacer   )
r	   r
   r+   r   fillnar   r-   r>   rR   r   )r"   s    r#   +test_update_inplace_sets_valid_block_valuesr   {  s    	CJ???@	A	AB 
	+	-	- ( (
3q$'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( bgnQ'.<<<<<<<s   A  A$'A$c                      t          t          d                    } t          j        |           j        d d g df                             t                    S )NaI  "Obs","GNPDEFL","GNP","UNEMP","ARMED","POP","YEAR"
            1,83,234289,2356,1590,107608,1947
            2,88.5,259426,2325,1456,108632,1948
            3,88.2,258054,3682,1616,109773,1949
            4,89.5,284599,3351,1650,110929,1950
            5,96.2,328975,2099,3099,112075,1951
            6,98.1,346999,1932,3594,113270,1952
            7,99,365385,1870,3547,115094,1953
            8,100,363112,3578,3350,116219,1954
            9,101.2,397469,2904,3048,117388,1955
            10,104.6,419180,2822,2857,118734,1956
            11,108.4,442769,2936,2798,120445,1957
            12,110.8,444546,4681,2637,121950,1958
            13,112.6,482704,3813,2552,123366,1959
            14,114.2,502601,3931,2514,125368,1960
            15,115.7,518173,4806,2572,127852,1961
            16,116.9,554894,4007,2827,130081,1962
            )r   rV   r   rj   rN      )r   r   r   read_csvr   r   float)longley_csvs    r#   get_longley_datar     s]     	
 	
 K. ;{##(,>,>,>)>?FFuMMMr%   c                      d } t          j        | dt                      fd           d fd}t          j        |dt                      fd           d S )Nc                     |                                  t          j        | dz   dz
  |                                            d S )Nr   )waitr+   rX   rW   )r   r   s     r#   numpy_assertz0test_multithreaded_reading.<locals>.numpy_assert  s8    	
qA~tyy{{;;;;;r%      T)max_workers	argumentspass_barrierc                     	 t          j        |           dk    ot          j        | dk              S # t          $ r Y dS w xY w)Ng        F)r1   ptpany	Exception)rz   s    r#   safe_is_constz1test_multithreaded_reading.<locals>.safe_is_const  sO    	6!99#8qCx(8(88 	 	 	55	s   /2 
A A c           	         |                                  |                                 }t          |          }t          j        t          j        t          j        d|dz   t          j                  d                    }|                    d           t          ||j
        dg          }||g}t          j        |d d d         d          }t          j        ||           d S )Nr   r)   r   constr   )axis)r   rW   r=   r1   fliplrvanderarangerc   applyr	   rp   r   concatr+   r0   )r   r   xnobstrendarrr  s        r#   r	  z*test_multithreaded_reading.<locals>.concat  s    	IIKK1vv9RYryD1HBJ'O'O'OQRSSTT	q!!!XQWwiHHHqMIa!f1%%%
a#####r%   )r+   run_multithreadedr   )r   r	  r  s     @r#   test_multithreaded_readingr    s    < < < !0@0B0B/DSW     	$ 	$ 	$ 	$ 	$ A*:*<*<)>T     r%   )$r   r   ior   r   textwrapr   numpyr1   rO   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r	   r
   r   r   r   pandas._testing_testingr+   pandas.core.internals.blocksr   r   r   r   skip_if_thread_unsafe_warningsmark
single_cpur  r   r%   r#   <module>r     s                               ( ( ( ( ( ( ) ) ) ) ) ) ) ) )                          3 3 3 3 3 3Y' Y' Y' Y' Y' Y' Y' Y'x
	= 	= 	=N N ND "   #"  r%   