
    .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	jB                  jD                  d               Z#y)    )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y)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 y )	N20130101   
US/Eastern)periodstz   B)r   r   D)r   r	   _valuesfreqpdNaTiloc)selfdtitsdfs       e/var/www/app/trading-bot/venv/lib/python3.12/site-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##+++ xx31v||    c                 $   d}t        j                  t        |d      5  t        |j                  t
              }d d d        t        |j                  t
              }t        j                  |       t        j                  t        |d      5  t        |j                  t        j                        }d d d        t        |j                  t        j                        }t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   QxY w)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0<
fh/''#
 	A {//rxx@F	A [00A
fh/	< 	<	A 	As   C:&D:DDc                    d|d<   |j                         }t        |j                  j                        dk(  sJ |j                         }||usJ t	        j
                  ||       d|d<   t        |j                  j                        dk(  sJ |j                         }|J t        |j                  j                        dk(  sJ y )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 **,\)))
fl3C;##**+q000"779###;##**+q000r%   c                 x    t        t        d      t        d            D ]  }t        |      |t        |      <    y )NAZ)rangeordchr)r   r3   letters      r#   test_consolidate_inplacez4TestDataFrameBlockInternals.test_consolidate_inplaceR   s2    CHc#h/ 	3F'*6{KF$	3r%   c                     t        j                  t        d      5  d|j                  d<   d d d        |j                  d   dk7  j	                         sJ y # 1 sw Y   ,xY w)Nz	read-onlyr'      )pytestraises
ValueErrorvaluesall)r   r3   s     r#   test_modify_valuesz.TestDataFrameBlockInternals.test_modify_valuesW   sW    ]]:[9 	&$%Kq!	&""1%*//111	& 	&s   AA c                     d|d<   |j                   j                         }d||dkD  <   d||dkD  <   t        j                  ||j                          y )Nr9   r:      r   )rR   copyr+   assert_almost_equal)r   r3   r6   s      r#   test_boolean_set_unconsz3TestDataFrameBlockInternals.test_boolean_set_uncons\   sR    C%%**,!"A'(K!O$
x););<r%   c                 8	   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                  ||       y )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   s    i[)*C"**i["((;#F
vx0eW~&C"**eWbii8sC
vx0htQ2D9:;CJJq!,d3RZZ@s
 	vx0dAY'(C"**bffa["**=CH
vx0c1X'C"**c1Xrzz:E
vx0j!_-.C"**j!_bmmD3O
vx0j#./0C"**j#%6FSQ
vx0j$/01C"**j$%7D3O
vx0c4[)*C"**c266]BJJ?cJ
vx0j$/01C"**j"&&%92==IPST
vx0123C"**%92::FSQ
vx0c1htQ&:DABCCJJQq! 4d;RZZHs
 	vx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                  ||       y )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;'!*-33x???!+.44@@@#**XXi !A% * "^^RVV4)**+ BDLA%AA[A

 	vx0r%   c                    t        j                  g dd      }t        d|i      }t        dt        j                  ddd      it        d      	      }t        j                  |d   j                         |       t        t        d
      j                  d      t        d
d      j                  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                  ||       y )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    hhy(89Sz""$$ZEFeTUh
 	##BsG$4$4$6< ,44S9!*a8??H (
 u%000u%000mmL)hh6o
 s3/0 	b(+r%   c                    d }d}t        j                  t        |      5   |g d       d d d        t        j                  t        d      5   |d       d d d        t        j                  t        d      5   |d       d d d        d}t        j                  t        |      5   |d	       d d d        y # 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   PxY w# 1 sw Y   y xY w)
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   s8    	(((4A*>b)I1MND$u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 Q]].c: 	FDE	F ]]9,>? 	gJ	]]9,>? 	iL	 F]]:S1 	hK	 		F 	F	 		 	
	 	s/   B;	C;	C)	C;CCCC(c                     t        j                  ||      }t        j                  ||       |j                  j                   y N)r+   round_trip_pickler0   r-   ndim)r   ru   	temp_file	unpickleds       r#   test_pickle_float_string_framez:TestDataFrameBlockInternals.test_pickle_float_string_frame   s7    (();YG	
0)< 	$$r%   c                 Z    t               }t        j                  ||      }t        |       y r   )r	   r+   r   repr)r   r   empty_framer   s       r#   test_pickle_emptyz-TestDataFrameBlockInternals.test_pickle_empty   s"    k((i@	Yr%   c                 \    t        j                  ||      }t        j                  ||       y r   )r+   r   r0   )r   timezone_framer   r   s       r#   test_pickle_empty_tz_framez6TestDataFrameBlockInternals.test_pickle_empty_tz_frame  s$    ((C	
ni8r%   c                    t        t        j                  g d      t        j                  g d      g dd      }|j                  }|j                  |_        |j                  d      }|j                  d      }d|j
                  _        |j                  }|j                  |_        |j                  d      }|j                  d      }d|j
                  _        |j
                  |_        |j
                  |_	        t        j                  t        j                  |j                        |j
                         t        j                  t        j                  |j                        |j
                         y )	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  s,    NN .. /'
0 {{)00#//=#..u5",YY
%,,
++L9
**51
 (
"(($$	
b..r{{;\=O=OP
b..ryy9:;K;KLr%   c                 <    |j                   rJ |j                   sJ y r   )_is_mixed_type)r   r3   ru   s      r#   test_is_mixed_typez.TestDataFrameBlockInternals.test_is_mixed_type2  s     ----!0000r%   c                    t        dd       5  t        t        j                  j	                  d      j                  d      dd      }t        |       |d   j                  d      |d<   t        j                         5  t        j                  |d	   d
<   d d d        t        |       |j                          |d	   j                          t        j                  |d	   d
         rJ 	 d d d        y # 1 sw Y   ^xY w# 1 sw Y   y xY w)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 	,		%%a(//7*,A
 GsV]]8,AcF335 % ff#s%GEEGcFJJLwwqvc{++++	, 	,% %	, 	,s%   A1C>>C2AC>2C;	7C>>Dc                 B   t        ddg      }t        j                  |d<   i }t        j                  |d      5  t        |j                        D ]C  \  }}t        dd      D ]/  }||vrd||<   t        j                  ||<   ||j                  ||f<   1 E 	 d d d        d}t        |j                  t        j                  ||         |gf         }t        |j                  t        j                  ||         |gf         }	||	cxk(  rdk(  sJ  J y # 1 sw Y   ~xY w)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''
 	( #288, (2 c? (C&(&'s"$&&3&'BFF2s7O	((	( BFF2772d8,tf456RVVBGGBtH-v567#!#####	( 	(s   ADDc                 2   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 y )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~     Y%%C:&c9-.
fh/&++,,Q/<<<{{!!!$////r%   c           
         t        g dg dd      }t        j                  j                  t	        j
                  g dt                    |d<   t        g dg dt        j                  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                  ||       y )	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  s   \0DEF))//PV0WX3!)YY22HH_F;
 BsGLL''*+z999#w||""1%////CHMM((+,
:::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      sf    "0 1"3
2
=A1F1( ,D.%
9+MZ1,"$,0'r%   r   c                     t        dt        g dd      i      } t        j                         5  | d   j	                  dd       d d d        t        | j                  j                  d   j                  t              sJ y # 1 sw Y   =xY w)	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   {  st    	CJ?@	AB 
	+	+	- (
3q$'( bggnnQ'..<<<	( (s   BBc                      t        t        d            } t        j                  |       j                  d d g df   j                  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     sH     	
K. ;;{#((,>)>?FFuMMr%   c                      d } t        j                  | dt               fd       d fd}t        j                  |dt               fd       y )Nc                 x    |j                          t        j                  | dz   dz
  | j                                y )Nr   )waitr+   rX   rW   )r   r   s     r#   numpy_assertz0test_multithreaded_reading.<locals>.numpy_assert  s)    	
qA~tyy{;r%      T)max_workers	argumentspass_barrierc                     	 t        j                  |       dk(  xr t        j                  | dk7        S # t        $ r Y yw xY w)Ng        F)r1   ptpany	Exception)rz   s    r#   safe_is_constz1test_multithreaded_reading.<locals>.safe_is_const  s>    	66!9#8qCx(88 		s   14 	A A c           	         |j                          | j                         }t        |      }t        j                  t        j
                  t        j                  d|dz   t        j                        d            }|j                  d       t        ||j                  dg      }||g}t        j                  |d d d   d      }t        j                  ||       y )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    	IIK1v99RYYryyD1HBJJ'OQRST	q!XQWWwiHqMIIa!f1%
a#r%   )r+   run_multithreadedr   )r   r	  r  s     @r#   test_multithreaded_readingr    sS    < !0@0B/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Y' Y'x
	=ND ""  #r%   