
    .iE                    
   U d dl mZ d dlmZ d dlmZ d dlZd dlZd dlm	Z	 d dl
Z
d dlmZmZ d dlZd dlmZ d dlmZmZmZ d d	l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!m"Z"m#Z# d dl$m%Z%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= d dl>m?Z?m@Z@ d dlAmBZBmCZCmDZDmEZE d dlFmGZGmHZHmIZI d dlJmKZK d dlLmMZM erd dlNmOZO d dlPmQZQmRZR g dZSdeTd<   g dZUdeTd<   eVddddgZWdeTd<   g d ZXdeTd!<   eSeWz   ZYeUeXz   ZZg eYeZZ[deTd"<   e\d#d$gZ]deTd%<   d&d'gZ^deTd(<   g e]e^Z_deTd)<   e`d*d+gZadeTd,<    e       r	d-gZbdeTd.<   n
ecd/d-gZbdeTd.<   g eae]ZddeTd0<   d1d2gZedeTd3<   d4d5gZfdeTd6<   egd7gZhdeTd8<   eid9gZjdeTd:<   ekd;gZldeTd<<   e]eYz   Zme^eZz   Zng emenZodeTd=<   g eoeaZpdeTd><   emeaz   ebz   eez   efz   ehz   elz   ejz   Zqej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  gZzeceVe\e`e{e|e}e~eeegeieegZd?d@dAe	   Zdej
                  ej                   e\dB      ej                   edC      gZej                  ej                  fD  cg c]  } dDD ]  } | dE|        c}} Zerd dlZ ej                          ej                          ej                          ej                         gZ ej                          ej                          ej                          ej                          gZeez   ZeD cg c]  } ec e|             c}Z ej                          ej(                         gZeD cg c]  } ec e|             c}Z ej.                  dFdG      gZ ej2                         gZ ej6                         gZ ej:                  dH       ej:                  dI       ej<                  dJ       ej<                  dK      gZ ej@                          ejB                         gZdLD cg c]  }dMD ]  } ejF                  ||N         c}}ZdLD cg c]  } ejJ                  |       c}Z ejN                         gZeez   ez   ez   ez   ez   ez   ez   ez   ez   Zeez   Zng Zg Zg Zg Ze]enz   ez   Zg dOZg dPZdedfdQZdR Z G dS dTe      Z G dU dVe      ZdgdWZdhdXZdY ZdidZZd[ Zd\ Zd] Zd^ Zd_ Zd` Zg dLZdjdaZdkdbZdldcZg ddZyc c}} w c c}w c c}w c c}}w c c}w )m    )annotations)ThreadPoolExecutor)DecimalN)	byteorder)TYPE_CHECKINGContextManager)using_string_dtype)can_set_localeget_locales
set_locale)HAS_PYARROW)
ArrowDtype	DataFrameIndex
MultiIndex
RangeIndexSeries)round_trip_pathlibround_trip_picklewrite_to_compressed)assert_produces_warningmaybe_produces_warning)assert_almost_equalassert_attr_equalassert_categorical_equalassert_class_equalassert_contains_allassert_copyassert_datetime_array_equalassert_dict_equalassert_equalassert_extension_array_equalassert_frame_equalassert_index_equal!assert_indexing_slices_equivalentassert_interval_array_equalassert_is_sortedassert_metadata_equivalentassert_numpy_array_equalassert_period_array_equalassert_series_equalassert_sp_array_equalassert_timedelta_array_equalraise_assert_detail)	get_dtypeget_obj)decompress_fileraises_chained_assignment_errorset_timezonewith_csv_dialect)ArrowExtensionArrayBaseMaskedArrayNumpyExtensionArray)NDArrayBackedExtensionArray)extract_array)Callable)DtypeNpDtype)uint8uint16uint32uint64zlist[NpDtype]UNSIGNED_INT_NUMPY_DTYPES)UInt8UInt16UInt32UInt64zlist[Dtype]UNSIGNED_INT_EA_DTYPESint8int16int32int64SIGNED_INT_NUMPY_DTYPES)Int8Int16Int32Int64SIGNED_INT_EA_DTYPESALL_INT_DTYPESfloat32float64FLOAT_NUMPY_DTYPESFloat32Float64FLOAT_EA_DTYPESALL_FLOAT_DTYPES	complex64
complex128COMPLEX_DTYPESUSTRING_DTYPESstrCOMPLEX_FLOAT_DTYPESzdatetime64[ns]zM8[ns]DATETIME64_DTYPESztimedelta64[ns]zm8[ns]TIMEDELTA64_DTYPESboolBOOL_DTYPESbytesBYTES_DTYPESobjectOBJECT_DTYPESALL_REAL_DTYPESALL_NUMERIC_DTYPES<>)littlebignanNaN)YMWDhmsmsusnspsfsasNaT      rv   rw   rx   ry   )rv   rw   rx   ry   )NUTCz
US/Pacificz
US/Eastern)unittz)__add____radd____sub____rsub____mul____rmul____floordiv____rfloordiv____truediv____rtruediv____pow____rpow____mod____rmod__)__eq____ne____le____lt____ge____gt__c                r   |t         j                  u rSt        | t              r*t	        t        j                  | j                              } | S t        j                  | d      } | S |t        u rt        | d      } | S |t        u rt        |       } | S |t        u rDt        |       j                         } |r'| j                  } t        j                  | gdz  d      } | S |t
        j                  u s|t
        j                  u rt        j                  |       } | S |t        u rt        |       } | S t!        |      )z
    Helper function to wrap the expected output of a test in a given box_class.

    Parameters
    ----------
    expected : np.ndarray, Index, Series
    box_cls : {Index, Series, DataFrame}

    Returns
    -------
    subclass of box_cls
    F)copy   T)ignore_index)pdarray
isinstancer   r7   npasarray_valuesr   r   r   to_frameTconcatndarrayto_arrayNotImplementedError)expectedbox_cls	transposes      V/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/_testing/__init__.pybox_expectedr     s)    "((h
+*2::h6F6F+GHH, O) xxu5H( O' 
E	.$ O# 
F	(#  O 
I	(#,,.
  zzHyy(adCH O 
BJJ	'RXX"588H%
 O	 
H	H% O "'**    c                d    t        | dd      }|t        j                  |       S t        | d      S )zQ
    Similar to pd.array, but does not cast numpy dtypes to nullable dtypes.
    dtypeNT)extract_numpy)getattrr   r   r9   )objr   s     r   r   r   ;  s2    
 C$'E}zz#D11r   c                  4    e Zd ZddgZed        Zed        Zy)SubclassedSeriestestattrnamec                    d S )Nc                     t        | i |S Nr   argskwargss     r   <lambda>z/SubclassedSeries._constructor.<locals>.<lambda>R      '7'H'H r    selfs    r   _constructorzSubclassedSeries._constructorK  s     IHr   c                    d S )Nc                     t        | i |S r   SubclassedDataFramer   s     r   r   z9SubclassedSeries._constructor_expanddim.<locals>.<lambda>V      ':D'KF'K r   r   r   s    r   _constructor_expanddimz'SubclassedSeries._constructor_expanddimT      KKr   N)__name__
__module____qualname__	_metadatapropertyr   r   r   r   r   r   r   H  s6    V$II I L Lr   r   c                  2    e Zd ZdgZed        Zed        Zy)r   r   c                    d S )Nc                     t        | i |S r   r   r   s     r   r   z2SubclassedDataFrame._constructor.<locals>.<lambda>^  r   r   r   r   s    r   r   z SubclassedDataFrame._constructor\  r   r   c                    d S )Nc                     t        | i |S r   r   r   s     r   r   z9SubclassedDataFrame._constructor_sliced.<locals>.<lambda>c  r   r   r   r   s    r   _constructor_slicedz'SubclassedDataFrame._constructor_sliceda  s    HHr   N)r   r   r   r   r   r   r   r   r   r   r   r   Y  s3    IL L I Ir   r   c                J    t         j                  }|j                  |       |z   S )aW  
    Convert list of CSV rows to single CSV-formatted string for current OS.

    This method is used for creating expected value of to_csv() method.

    Parameters
    ----------
    rows_list : List[str]
        Each element represents the row of csv.

    Returns
    -------
    str
        Expected output of to_csv() in current OS.
    )oslinesepjoin)	rows_listseps     r   convert_rows_list_to_csv_strr   f  s!      **C88I$$r   c                0    ddl }|j                  | d      S )a$  
    Helper function to mark pytest.raises that have an external error message.

    Parameters
    ----------
    expected_exception : Exception
        Expected error to raise.

    Returns
    -------
    Callable
        Regular `pytest.raises` function with `match` equal to `None`.
    r   N)match)pytestraises)expected_exceptionr   s     r   external_error_raisedr   z  s     ==+4=88r   c                F    g }|D ]  \  }}|j                  | ||f        |S )a  
    Combine frame, functions from com._cython_table
    keys and expected result.

    Parameters
    ----------
    ndframe : DataFrame or Series
    func_names_and_expected : Sequence of two items
        The first item is a name of an NDFrame method ('sum', 'prod') etc.
        The second item is the expected return value.

    Returns
    -------
    list
        List of three items (DataFrame, function, expected result)
    )append)ndframefunc_names_and_expectedresults	func_namer   s        r   get_cython_table_paramsr     s5    " G6 7	8H567Nr   c                    | j                  d      }	 t        t        |      }|S # t        $ r t        t        |dd       fd}Y |S w xY w)z
    The operator function for a given op name.

    Parameters
    ----------
    op_name : str
        The op name, in form of "add" or "__add__".

    Returns
    -------
    function
        A function performing the operation.
    _   Nc                     ||       S r   r   )xyrops     r   r   z"get_op_from_name.<locals>.<lambda>  s    #a) r   )stripr   operatorAttributeError)op_nameshort_opnameopr   s      @r   get_op_from_namer     sY     ==%L$X|, I  $hQR 01#I$s   & !A
Ac                    | S r   r   r   s    r   getitemr         Hr   c                    | S r   r   r   s    r   setitemr     r   r   c                    | j                   S r   )locr   s    r   r   r         55Lr   c                    | j                   S r   )ilocr   s    r   r  r    s    66Mr   c                    | j                   S r   )atr   s    r   r  r    s    44Kr   c                    | j                   S r   )iatr   s    r   r  r    r   r   c                `    t         j                  |       t         j                  |      k\  r| S |S )z2
    Find the higher of two datetime64 units.
    )_UNITSindex)leftrights     r   get_finest_unitr    s(     ||DV\\%00Lr   c                   t        | t        j                        r0t        |t        j                        rt        j                  | |      S t        | t        j                        rt        ||       S t        | t              ryt        | t
              rt        | j                  |      S t        | t        t        f      rLt        |t        t        f      r t        | j                  |j                        S t        | j                  |      S t        | t              rt        | j                  |      S t        | t        j                  j                  j                        rt        | j                   |      S t        | t        j                  j                  j"                        r.t        | j$                  |      xs t        | j&                  |      S t        | t(              rt        |t(              ru| j*                  }|j*                  }|j-                  d      j/                         d   }|j-                  d      j/                         d   }|j0                  |j0                  k(  S t        j                  | |      S t        | t2              rft        |t2              rVt        j                  | j4                  |j4                        xs* t        j                  | j6                  |j6                        S t        | t8              rQt;        | j<                  j>                        dk(  r/| j<                  j>                  d   j@                  }t        ||      S tC        tE        |       tE        |            )z-
    Pandas-compat for np.shares_memory.
    Fr   r   )#r   r   r   shares_memoryr   r   _codesr   r   r   r8   _ndarrayr   corearraysSparseArray	sp_valuesIntervalArray_left_rightr5   	_pa_arraychunkbuffersaddressr6   _data_maskr   len_mgrblocksvaluesr   type)r	  r
  left_pa_dataright_pa_data	left_buf1
right_buf1arrs          r   r  r    st    $

#
5"**(Ee,,	D"**	%UD))$
#$
#T[[%00$(eeV_- u}}==T\\511$34T]]E22$223T^^U33$445TZZ/T=e3TT$+,e01>>L!OOM$**1-557:I&,,Q/779!<J$$
(:(::: ##D%00$(Z-O 

EKK8 
B<L<LJJ=
 	
 $	"s499+;+;'<'Aiiq!((S%((
d4j$u+
66r   c           	     F   t        |      5 }|g }nt        |      }|r&t        j                  |      }|j	                  |       	 g }t        |      D ]$  }|j	                   |j                  | g|        & 	 t              |k  r|rj                          	 |D ]  }
|
j                           	 d d d        y # t        $ r&}dd l}	|	j                  d| d|d       Y d }~ld }~ww xY w# t              |k  r|rj                          w w w xY w# 1 sw Y   y xY w)N)max_workersr   z	Spawning z threads failed with error z@ (likely due to resource limits on the system running the tests))r   list	threadingBarrierr   rangesubmitRuntimeErrorr   skipr  abortresult)closurer(  	argumentspass_barriertpebarrierfuturesr   er   fs              r   run_multithreadedr:    s+   		4 IYI''4GW%	 G;' @zszz'>I>?@ 7|k)l 	AHHJ	3   	KKK= ) ,, 	 7|k)l /;)/ sG   9D4B>;C0<8D>	C-C(#C0(C--C00$DDD )JALL_INT_EA_DTYPESALL_INT_NUMPY_DTYPESALL_NUMPY_DTYPESALL_REAL_NUMPY_DTYPESrc   re   r[   r`   ENDIANrW   rT   NARROW_NP_DTYPESNP_NAT_OBJECTSNULL_OBJECTSrg   rP   rK   r]   ra   rF   rA   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r   r+   r,   r-   r  r   r
   r   r1   r   r   r/   r  r   r0   r   r   r  r  r   r   r.   r2   r   r   r:  r   r3   r   r  r   r4   r   )T)r   rb   )r   z	list[str]returnr^   )r   ztype[Exception]rC  r   )r   r^   rC  r:   )r	  r^   r
  r^   rC  r^   )rC  rb   )NF)
__future__r   concurrent.futuresr   decimalr   r   r   sysr   r*  typingr   r   numpyr   pandas._configr	   pandas._config.localizationr
   r   r   pandas.compatr   pandasr   r   r   r   r   r   r   pandas._testing._ior   r   r   pandas._testing._warningsr   r   pandas._testing.assertersr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   pandas._testing.compatr/   r0   pandas._testing.contextsr1   r2   r3   r4   pandas.core.arraysr5   r6   r7   pandas.core.arrays._mixinsr8   pandas.core.constructionr9   collections.abcr:   pandas._typingr;   r<   rA   __annotations__rF   intrK   rP   r<  r;  rQ   floatrT   rW   rX   complexr[   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   r>  ALL_REAL_EXTENSION_DTYPESrh   ri   r=  float16rR   rG   rH   rI   r=   r>   r?   r@  r)  tupler,  dictset	frozenset	bytearray
memoryviewPYTHON_DATA_TYPESr?  rn   r}   NArB  
datetime64timedelta64rA  pyarrowpar@   UNSIGNED_INT_PYARROW_DTYPESrJ   SIGNED_INT_PYARROW_DTYPESALL_INT_PYARROW_DTYPESALL_INT_PYARROW_DTYPES_STR_REPRrS   FLOAT_PYARROW_DTYPESFLOAT_PYARROW_DTYPES_STR_REPR
decimal128DECIMAL_PYARROW_DTYPESstringSTRING_PYARROW_DTYPESbinaryBINARY_PYARROW_DTYPEStime32time64TIME_PYARROW_DTYPESdate32date64DATE_PYARROW_DTYPES	timestampDATETIME_PYARROW_DTYPESdurationTIMEDELTA_PYARROW_DTYPESbool_BOOL_PYARROW_DTYPESALL_PYARROW_DTYPES ALL_REAL_PYARROW_DTYPES_STR_REPRALL_REAL_NULLABLE_DTYPESarithmetic_dunder_methodscomparison_dunder_methodsr   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r:  __all__)clsr   typr   s   0000r   <module>r     sc   " 1   	  
  -  &   
     0  
 C 2( ,S = R&M  M*-vw)Q  Q$G k G03JJ *-AA I 4I7HI I%*Iy$A M A )95 5 G"4 G G + G&\B B"%M;&"%uc!2M;2$Jn$J7I$J k J"2H!= ; =#4h"? K ? &>[ )"G,k ,$h/{ /*-AA +.?? S!6S9RS S"EO"En"E K E   	
     JJJJGGHHHHHHIIII	  				 " 	$Y	/bffbffeElBEE75>J r~~. 	 t( #+288:yryy{IBIIK"U!(HBHHJ
HBHHJ O8;TT(>'!$JsO'# 'BJJL*"**,7(<%!$JsO%! ,bmmAq12&RYY[M&RYY[M 			#		$		$		$	 %299;			4 ,;  	$2&&
 ?VVdD 1V#288:,
 	
	
 	!  	   		 
 	 	 "	" #	# 		  	(*GG % %'!&(#')$ 225UU  " Y &R
2Lv L"
I) 
I%(9&.: 
!27j<Kg4'%
  Ws   	T):T/9T4?#T9*T?