
    .i-G                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlm	Z
 d dlmZ d dlmZmZmZ ej"                  j%                  d      Zej(                  d        Zej(                  d        Zej(                  d        Zej(                  d	        Zej(                  d
        Zej(                  d        Zej(                  d        Z G d dej8                        Zd Zd Zd Z y)    N)base)	JSONArray	JSONDtype	make_data
Unhashablereasonc                      t               S N)r        c/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/extension/json/test_json.pydtyper      s
    ;r   c                      t        d      } t        | d         t        | d         k(  r)t        d      } t        | d         t        | d         k(  r)t        |       S )z'Length-10 JSONArray for semantics test.
   r      )r   lenr   )datas    r   r   r      sV     R=D d1g,#d1g,
&} d1g,#d1g,
& T?r   c                       t        i ddig      S )zLength 2 array with [NA, Valid]ar   r   r   r   r   data_missingr   ,   s     b3)_%%r   c                  ,    t        ddiddidddg      S )Nbr   c         r   r   r   r   r   r   data_for_sortingr    2   s!    sAha*:;<<r   c                  &    t        ddii ddig      S )Nr   r   r   r   r   r   r   r   data_missing_for_sortingr"   7   s    sAhS!H-..r   c                  "    t         j                  S r   )operatoreqr   r   r   na_cmpr&   <   s    ;;r   c                  D    t        ddiddii i ddddddddiddig      S )Nr   r   r   r   r   r   r   r   r   r   data_for_groupingr(   A   sF    !H!H!!!H!H		
 r   c                       e Zd Zej                  j                  d       fd       Zej                  j                  d       fd       Zej                  j                  d       fd       Zej                  j                  d       fd       Z	ej                  j                  d	       fd
       Z
ej                  j                  d       fd       Zej                  j                  d       fd       Zej                  j                  d       fd       Zej                  j                  d       fd       Z fdZej                  j                  d       fd       Zej                  j                  d       fd       Zej                  j%                  ddg dg dfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfdg dg dfg       fd        Z fd!Ze fd"       Zej                  j                  d#       fd$       Zej                  j                  d%d&e'       fd(       Zej                  j                  d)       fd*       Zej                  j                  d+       fd,       Zej                  j                  d+       fd-       Zej                  j;                  d.       fd/       Zej                  j                  d0       fd1       Zej                  j                  d2       fd3       Z e fd4       Z!e fd5       Z"e fd6       Z#e fd7       Z$ fd8Z% fd9Z&ej                  j                  d:       fd;       Z'ej                  j                  d:       fd<       Z(ej                  j                  d:       fd=       Z)ej                  j                  d:       fd>       Z*ej                  j%                  d? e+jX                  g d@       e-jX                  g d@dAB       e-jX                  dCdCdCe-j\                  e-j\                  gdAB      gg dDE       fdF       Z/ fdGZ0ej                  j                  dH       fdI       Z1ej                  j%                  dJg dK e-jX                  g dKdLB       e+jX                  g dK      gg dME       fdN       Z2ej                  j%                  dJdOdPdQe-j\                  g e-jX                  dOdPdQe-j\                  gdLB      gdRdSgE      ej                  j%                  dTdC ejf                  d&ej                  j                  dU      V      g       fdW              Z4ej                  j                  dX       fdY       Z5 fdZZ6ej                  j                  d[       fd\       Z7ej                  j                  dH      ej                  j%                  d]d^d_g       fd`              Z8ej                  j                  da       fdb       Z9ej                  j                  dc       fdd       Z:ej                  j                  dc       fde       Z;ej                  j                  dc       fdf       Z<ej                  j                  dg       fdh       Z=ej                  j                  di       fdj       Z>ej                  j                  dk       fdl       Z?ej                  j                  dm      ej                  j%                  dndodpg       fdq              Z@ xZAS )rTestJSONArrayz:comparison method not implemented for JSONArray (GH-37867)r   c                 $    t         |   |       y r   )supertest_containsselfr   	__class__s     r   r-   zTestJSONArray.test_containsR   s    
 	d#r   z&not implemented constructor from dtypec                 $    t         |   |       y r   )r,   test_from_dtyper.   s     r   r2   zTestJSONArray.test_from_dtypeY   s     	%r   zRecursionError, GH-33900c                     t        j                         }	 t        j                  d       t        |   ||       t        j                  |       y # t        j                  |       w xY wNd   )sysgetrecursionlimitsetrecursionlimitr,   *test_series_constructor_no_data_with_indexr/   r   na_value	rec_limitr0   s       r   r9   z8TestJSONArray.test_series_constructor_no_data_with_index^   sR     ))+		-!!#&G>uhO!!),C!!),   %A A)c                     t        j                         }	 t        j                  d       t        |   ||       t        j                  |       y # t        j                  |       w xY wr4   )r6   r7   r8   r,   ,test_series_constructor_scalar_na_with_indexr:   s       r   r?   z:TestJSONArray.test_series_constructor_scalar_na_with_indexi   sR     ))+		-!!#&G@Q!!),C!!),r=   zcollection as scalar, GH-33901c                     t        j                         }	 t        j                  d       t        |   ||       t        j                  |       y # t        j                  |       w xY wr4   )r6   r7   r8   r,   )test_series_constructor_scalar_with_index)r/   r   r   r<   r0   s       r   rA   z7TestJSONArray.test_series_constructor_scalar_with_indext   sR     ))+		-!!#&G=dEJ!!),C!!),r=   zDifferent definitions of NAc                 "    t         |           y)z
        The test does .astype(object).stack(). If we happen to have
        any missing values in `data`, then we'll end up with different
        rows since we consider `{}` NA, but `.astype(object)` doesn't.
        N)r,   
test_stackr/   r0   s    r   rC   zTestJSONArray.test_stack   s     	r   zdict for NAc                 $    t         |   ||      S r   )r,   test_unstack)r/   r   indexr0   s      r   rF   zTestJSONArray.test_unstack   s     w#D%00r   zSetting a dict as a scalarc                 "    t         |           yz;We treat dictionaries as a mapping in fillna, not a scalar.N)r,   test_fillna_seriesrD   s    r   rJ   z TestJSONArray.test_fillna_series   s     	"$r   c                 "    t         |           yrI   )r,   test_fillna_framerD   s    r   rL   zTestJSONArray.test_fillna_frame   s     	!#r   c                     t        j                  t              5  t        |   |       d d d        y # 1 sw Y   y xY wr   )pytestraisesAssertionErrorr,   test_fillna_with_noner/   r   r0   s     r   rQ   z#TestJSONArray.test_fillna_with_none   s3     ]]>* 	8G),7	8 	8 	8s   4=z5fill value is a dictionary, takes incorrect code pathc                 $    t         |   |       y r   r,   test_fillna_limit_framerR   s     r   rU   z%TestJSONArray.test_fillna_limit_frame        	'5r   c                 $    t         |   |       y r   rT   rR   s     r   test_fillna_limit_seriesz&TestJSONArray.test_fillna_limit_series   rV   r   z'limit_area, input_ilocs, expected_ilocsoutside)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   r   r   inside)r   r   r   r   r   c                     d}t        j                  t        |      5  t        |   ||||       d d d        y # 1 sw Y   y xY w)Nz'JSONArray does not implement limit_areamatch)rN   rO   NotImplementedErrorr,   test_ffill_limit_area)r/   r   
limit_areainput_ilocsexpected_ilocsmsgr0   s         r   r_   z#TestJSONArray.test_ffill_limit_area   sD    " 8]].c: 	G)j+~	 	 	s	   ;Ac                 p    t        |      dk(  s|r|j                  t               t        |   ||       y )Nr   )r   applymarker
unhashabler,   test_value_counts)r/   all_datadropnarequestr0   s       r   rg   zTestJSONArray.test_value_counts   s.    x=B&
+!(F3r   c                 "    t         |           y r   )r,   test_sort_values_framerD   s    r   rl   z$TestJSONArray.test_sort_values_frame   s     	&(r   z#combine for JSONArray not supportedc                 $    t         |   |       y r   )r,   test_combine_le)r/   data_repeatedr0   s     r   rn   zTestJSONArray.test_combine_le   s    .r   zGcombine for JSONArray not supported - may pass depending on random dataF)r	   strictrO   c                 $    t         |   |       y r   )r,   test_combine_firstr.   s     r   rr   z TestJSONArray.test_combine_first   s     	"4(r   zbroadcasting errorc                 &    t         |   ||       y r   )r,   test_where_series)r/   r   r;   r0   s      r   rt   zTestJSONArray.test_where_series   s    
 	!$1r   zCan't compare dicts.c                 $    t         |   |       y r   )r,   test_searchsorted)r/   r    r0   s     r   rv   zTestJSONArray.test_searchsorted   s    !"23r   c                 (    t         |   |||       y r   )r,   test_equals)r/   r   r;   	as_seriesr0   s       r   rx   zTestJSONArray.test_equals   s    D(I6r   z-fill-value is interpreted as a dict of valuesc                 $    t         |   |       y r   )r,   test_fillna_copy_framerR   s     r   r{   z$TestJSONArray.test_fillna_copy_frame   s    &|4r   zFails with CoWc                 $    t         |   |       y r   )r,   &test_equals_same_data_different_objectr.   s     r   r}   z4TestJSONArray.test_equals_same_data_different_object       6t<r   z$failing on np.array(self, dtype=str)c                 "    t         |           y)zThis currently fails in NumPy on np.array(self, dtype=str) with

        *** ValueError: setting an array element with a sequence
        N)r,   test_astype_strrD   s    r   r   zTestJSONArray.test_astype_str   s     	!r   c                 "    t         |           y)a  
        This currently fails in Series.name.setter, since the
        name must be hashable, but the value is a dictionary.
        I think this is what we want, i.e. `.name` should be the original
        values, and not the values for factorization.
        N)r,    test_groupby_extension_transformrD   s    r   r   z.TestJSONArray.test_groupby_extension_transform   s     	02r   c                 "    t         |           y)z
        This fails in Index._do_unique_check with

        >   hash(val)
        E   TypeError: unhashable type: 'UserDict' with

        I suspect that once we support Index[ExtensionArray],
        we'll be able to dispatch unique.
        N)r,   test_groupby_extension_applyrD   s    r   r   z*TestJSONArray.test_groupby_extension_apply   s     	,.r   c                 "    t         |           yz
        This fails when we get to tm.assert_series_equal when left.index
        contains dictionaries, which are not hashable.
        N)r,   test_groupby_extension_aggrD   s    r   r   z(TestJSONArray.test_groupby_extension_agg  s     	*,r   c                 "    t         |           yr   )r,   test_groupby_extension_no_sortrD   s    r   r   z,TestJSONArray.test_groupby_extension_no_sort  s     	.0r   c                     t        |d         dk7  r1t        j                  j                  d      }|j	                  |       t
        |   ||       y )Nr   r   zraises in coercing to Seriesr   )r   rN   markxfailre   r,   test_arith_frame_with_scalar)r/   r   all_arithmetic_operatorsrj   r   r0   s        r   r   z*TestJSONArray.test_arith_frame_with_scalar  sI    tAw<1;;$$,J$KD%,T3KLr   c                     |j                   dv r1t        j                  j                  d      }|j	                  |       t
        |   ||       y )N)r%   nez"Comparison methods not implementedr   )__name__rN   r   r   re   r,   test_compare_array)r/   r   comparison_oprj   r   r0   s        r   r   z TestJSONArray.test_compare_array#  sF    !!\1;;$$,P$QD%"47r   z.ValueError: Must have equal len keys and valuec                 $    t         |   |       y r   )r,   test_setitem_loc_scalar_mixedr.   s     r   r   z+TestJSONArray.test_setitem_loc_scalar_mixed)  s    -d3r   c                 $    t         |   |       y r   )r,   ,test_setitem_loc_scalar_multiple_homogoneousr.   s     r   r   z:TestJSONArray.test_setitem_loc_scalar_multiple_homogoneous-  s    <TBr   c                 $    t         |   |       y r   )r,   test_setitem_iloc_scalar_mixedr.   s     r   r   z,TestJSONArray.test_setitem_iloc_scalar_mixed1  s    .t4r   c                 $    t         |   |       y r   )r,   -test_setitem_iloc_scalar_multiple_homogoneousr.   s     r   r   z;TestJSONArray.test_setitem_iloc_scalar_multiple_homogoneous5  s    =dCr   mask)TTTFFboolean)r   T)numpy-arrayzboolean-arrayzboolean-array-na)idsc                 &   |r2t         j                  j                  d      }|j                  |       nKt	        |t
        j                        s1t         j                  j                  d      }|j                  |       t        | !  |||       y )N<cannot set using a list-like indexer with a different lengthr   z"Issues unwanted DeprecationWarning)	rN   r   r   re   
isinstancenpndarrayr,   test_setitem_mask)r/   r   r   box_in_seriesrj   r   r0   s         r   r   zTestJSONArray.test_setitem_mask9  sy     ;;$$U % D %D"**-;;$$,P$QD%!$m<r   c                     |s1t         j                  j                  d      }|j                  |       t        |   ||       y )NFails to raiser   )rN   r   r   re   r,   test_setitem_mask_raises)r/   r   r   rj   r   r0   s        r   r   z&TestJSONArray.test_setitem_mask_raisesM  s;    ;;$$,<$=D%(}=r   r   c                 &    t         |   ||       y r   )r,   'test_setitem_mask_boolean_array_with_nar/   r   r   r0   s      r   r   z5TestJSONArray.test_setitem_mask_boolean_array_with_naT  s     	7mLr   idx)r   r   r   Int64)listinteger-arrayr   c                     |r1t         j                  j                  d      }|j                  |       t        |   |||       y )Nr   r   )rN   r   r   re   r,   test_setitem_integer_array)r/   r   r   r   rj   r   r0   s         r   r   z(TestJSONArray.test_setitem_integer_arrayZ  sE     ;;$$U % D %*4mDr   r   r   r   r   r   r   z3list indices must be integers or slices, not NAType)marksc                 (    t         |   |||       y r   )r,   (test_setitem_integer_with_missing_raises)r/   r   r   r   r0   s       r   r   z6TestJSONArray.test_setitem_integer_with_missing_raisesg  s    * 	8sMRr   r   c                 $    t         |   |       y r   )r,   &test_setitem_scalar_key_sequence_raiser.   s     r   r   z4TestJSONArray.test_setitem_scalar_key_sequence_raise~  r~   r   c                     d|j                   j                  v r1t        j                  j	                  d      }|j                  |       t        |   ||       y )N
full_sliceslice is not iterabler   )nodenamerN   r   r   re   r,   ,test_setitem_with_expansion_dataframe_column)r/   r   full_indexerrj   r   r0   s        r   r   z:TestJSONArray.test_setitem_with_expansion_dataframe_column  sJ    7<<,,,;;$$,C$DD%<T<Pr   r   c                 $    t         |   |       y r   )r,   test_setitem_frame_2d_valuesr.   s     r   r   z*TestJSONArray.test_setitem_frame_2d_values  s    ,T2r   setterlocNc                 &    t         |   ||       y r   )r,   test_setitem_mask_broadcast)r/   r   r   r0   s      r   r   z)TestJSONArray.test_setitem_mask_broadcast  s    
 	+D&9r   z8cannot set using a slice indexer with a different lengthc                 &    t         |   ||       y r   )r,   test_setitem_slicer   s      r   r   z TestJSONArray.test_setitem_slice  s     	"47r   zslice object is not iterablec                 $    t         |   |       y r   )r,   test_setitem_loc_iloc_slicer.   s     r   r   z)TestJSONArray.test_setitem_loc_iloc_slice  s    +D1r   c                 $    t         |   |       y r   )r,   )test_setitem_slice_mismatch_length_raisesr.   s     r   r   z7TestJSONArray.test_setitem_slice_mismatch_length_raises  s    9$?r   c                 $    t         |   |       y r   )r,   test_setitem_slice_arrayr.   s     r   r   z&TestJSONArray.test_setitem_slice_array  s    (.r   zFail to raisec                 &    t         |   ||       y r   )r,   test_setitem_invalid)r/   r   invalid_scalarr0   s      r   r   z"TestJSONArray.test_setitem_invalid  s    $T>:r   z?result readonly flag is incorrect and does not support na_valuec                 $    t         |   |       y r   )r,   .test_readonly_propagates_to_numpy_array_methodr.   s     r   r   z<TestJSONArray.test_readonly_propagates_to_numpy_array_method  s     	>tDr   z+only integer scalar arrays can be convertedc                 $    t         |   |       y r   )r,   test_setitem_2d_valuesr.   s     r   r   z$TestJSONArray.test_setitem_2d_values  s    &t,r   zdata type 'json' not understoodenginer   pythonc                 (    t         |   |||       y r   )r,   test_EA_types)r/   r   r   rj   r0   s       r   r   zTestJSONArray.test_EA_types  s     	fdG4r   )Br   
__module____qualname__rN   r   r   r-   r2   r9   r?   rA   rC   rF   rJ   rL   rQ   rU   rX   parametrizer_   rg   rf   rl   rn   rP   rr   rt   rv   rx   skipr{   r}   r   r   r   r   r   r   r   r   r   r   r   r   arraypdNAr   r   r   r   paramr   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)r0   s   @r   r*   r*   Q   sF   [[K  $$ [[FG& H& [[89- :- [[89- :- [[>?- @- [[;< = [[m,1 -1
 [[:;% <% [[:;$ <$8 [[UV6 W6 [[UV6 W6 [[199998888		
4
 ) ) [[CD/ E/ [[,	  )) [[232 42 [[454 64 [[457 67 [[EF5 G5 [[./= 0= [[DE" F" 3 3 
/ 
/ - - 1 1M8 [[NO4 P4 [[NOC PC [[NO5 P5 [[NOD PD [[BHH56BHH5YGBHHdD$ruu5YG	

 A  	=	=> [[M  MM [[	HBHHYg68KL4  
E
E [[1beeBHHaAruu%W5	
 _%   [[FLLkk''P ( 	
S(S [[./= 0=Q [[563 73 [[M   [[Xt}5: 6: [[I  88 [[<=2 >2 [[<=@ >@ [[<=/ >/ [[o.; /; [[P  EE [[KL- M- [[?@[[XX75 8 A5r   r*   c                    | j                   j                  dk(  r| j                   |j                   k(  sJ t        j                  t	        | j
                  j                  t                    | j                  | j                        } t        j                  t	        |j
                  j                  t                    |j                  |j                        }t        j                  | |g|i | y )Njson)rG   r   )r   r   r   Seriesr   valuesastypeobjectrG   tmassert_series_equal)leftrightargskwargss       r   custom_assert_series_equalr     s    
 zz& zzU[[(((yydkk((01$))
 		ell))&12++

 4888r   c                    |j                  dd      }t        j                  | j                  |j                  |j                  dd      |j                  dd      |j                  dd      |j                  d	d      | d
       | j                  dk(  j
                  }|D ]  }t        | |   ||   g|i |  | j                  |      } |j                  |      }t        j                  | |g|i | y )Nobj	DataFramecheck_column_typeequivcheck_namesTcheck_exactFcheck_categoricalz.columns)exactr   r   r   r   r   )columns)	getr   assert_index_equalr   dtypesrG   r   dropassert_frame_equal)r   r   r   r   obj_typejsonscols          r   custom_assert_frame_equalr     s    zz%-Hjj,g6JJ}d3JJ}e4 **%8$?j! [[F"))E K"49eCjJ4J6JK 99U9#DJJuJ%E$777r   c                     t        t        j                  ddi      t        j                  ddi      t        j                  ddi      g      } t        j                  |       }t        ||       t        |j                         |j                                t        j                  | j                  g d            }d}t        j                  t        |	      5  t        ||       d d d        t        j                  t        |	      5  t        |j                         |j                                d d d        y # 1 sw Y   VxY w# 1 sw Y   y xY w)
Nr   r   r   r   r   r   )r   r   r   zSeries are differentr\   )r   collectionsUserDictr   r   r   r   to_frametakerN   rO   rP   )r   r   r   rc   s       r   test_custom_assertsr    s      #q*  #q*  #q*	
D 			$Aq!$ajjlAJJL9
		$))I&'A
!C	~S	1 )"1a() 
~S	1 >!!**,

=> >) )> >s   D<
)E<EE)!r  r$   r6   numpyr   rN   pandasr   pandas._testing_testingr   pandas.tests.extensionr   !pandas.tests.extension.json.arrayr   r   r   r   r   rf   fixturer   r   r   r    r"   r&   r(   ExtensionTestsr*   r   r   r  r   r   r   <module>r     s     
     '  [[l3
      & &
 = = / /    e5D'' e5P9$8,>r   