
    Pi-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                            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j                  Zd Zd Zd Z dS )    N)base)	JSONArray	JSONDtype	make_data
Unhashablereasonc                      t                      S N)r        y/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/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    ;t          |           S )z'Length-10 JSONArray for semantics test.
   r      )r   lenr   )datas    r   r   r      sj     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                  4    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                  L    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   sQ    !H!H!!!H!H		
  r   c                   B    e Zd Zej                            d           fd            Zej                            d           fd            Zej                            d           fd            Zej                            d           fd            Z	ej                            d	           fd
            Z
ej                            d           fd            Zej                            d           fd            Zej                            d           fd            Zej                            d           fd            Z fdZej                            d           fd            Zej                            d           fd            Ze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                            d#           fd$            Zej                            d%d&e'           fd(            Zej                            d)           fd*            Zej                            d+           fd,            Zej                            d+           fd-            Zej                            d.           fd/            Zej                            d0           fd1            Ze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                            d:           fd;            Z'ej                            d:           fd<            Z(ej                            d:           fd=            Z)ej                            d:           fd>            Z*ej                            d? e+j,        g d@           e-j,        g d@dAB           e-j,        dCdCdCe-j.        e-j.        gdAB          gg dDE           fdF            Z/ fdGZ0ej                            dH           fdI            Z1ej                            dJg dK e-j,        g dKdLB           e+j,        g dK          gg dME           fdN            Z2ej                            dJdOdPdQe-j.        g e-j,        dOdPdQe-j.        gdLB          gdRdSgE          ej                            dTdC ej3        d&ej                            dU          V          g           fdW                        Z4ej                            dX           fdY            Z5 fdZZ6ej                            d[           fd\            Z7ej                            dH          ej                            d]d^d_g           fd`                        Z8ej                            da           fdb            Z9ej                            dc           fdd            Z:ej                            dc           fde            Z;ej                            dc           fdf            Z<ej                            dg           fdh            Z=ej                            di           fdj            Z>ej                            dk           fdl            Z?ej                            dm          ej                            dndodpg           fdq                        Z@ xZAS )rTestJSONArrayz:comparison method not implemented for JSONArray (GH-37867)r   c                 J    t                                          |           d S r   )supertest_containsselfr   	__class__s     r   r-   zTestJSONArray.test_containsR   s#    
 	d#####r   z&not implemented constructor from dtypec                 J    t                                          |           d S 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        |           d S # 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^   sq     )++		-!#&&&GG>>uhOOO!),,,,,C!),,,,   6A" "A8c                     t          j                    }	 t          j        d           t                                          ||           t          j        |           d S # 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   sq     )++		-!#&&&GG@@QQQ!),,,,,C!),,,,r=   zcollection as scalar, GH-33901c                     t          j                    }	 t          j        d           t                                          ||           t          j        |           d S # 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   sq     )++		-!#&&&GG==dEJJJ!),,,,,C!),,,,r=   zDifferent definitions of NAc                 H    t                                                       dS )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                 H    t                                          ||          S r   )r,   test_unstack)r/   r   indexr0   s      r   rF   zTestJSONArray.test_unstack   s     ww##D%000r   zSetting a dict as a scalarc                 H    t                                                       dS 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                 H    t                                                       dS rI   )r,   test_fillna_framerD   s    r   rL   zTestJSONArray.test_fillna_frame   s!     	!!#####r   c                     t          j        t                    5  t                                          |           d d d            d S # 1 swxY w Y   d S r   )pytestraisesAssertionErrorr,   test_fillna_with_noner/   r   r0   s     r   rQ   z#TestJSONArray.test_fillna_with_none   s     ]>** 	8 	8GG)),777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   "A

AAz5fill value is a dictionary, takes incorrect code pathc                 J    t                                          |           d S r   r,   test_fillna_limit_framerR   s     r   rU   z%TestJSONArray.test_fillna_limit_frame   #     	''55555r   c                 J    t                                          |           d S 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            d S # 1 swxY w Y   d S )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   s    " 8].c::: 	 	GG))j+~  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   %AAAc                     t          |          dk    s|r|                    t                     t                                          ||           d S )Nr   )r   applymarker
unhashabler,   test_value_counts)r/   all_datadropnarequestr0   s       r   rg   zTestJSONArray.test_value_counts   sM    x==B&
+++!!(F33333r   c                 H    t                                                       d S r   )r,   test_sort_values_framerD   s    r   rl   z$TestJSONArray.test_sort_values_frame   s!     	&&(((((r   z#combine for JSONArray not supportedc                 J    t                                          |           d S 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                 J    t                                          |           d S r   )r,   test_combine_firstr.   s     r   rr   z TestJSONArray.test_combine_first   s#     	""4(((((r   zbroadcasting errorc                 L    t                                          ||           d S r   )r,   test_where_series)r/   r   r;   r0   s      r   rt   zTestJSONArray.test_where_series   s%    
 	!!$11111r   zCan't compare dicts.c                 J    t                                          |           d S r   )r,   test_searchsorted)r/   r    r0   s     r   rv   zTestJSONArray.test_searchsorted   s"    !!"233333r   c                 N    t                                          |||           d S r   )r,   test_equals)r/   r   r;   	as_seriesr0   s       r   rx   zTestJSONArray.test_equals   s%    D(I66666r   z-fill-value is interpreted as a dict of valuesc                 J    t                                          |           d S r   )r,   test_fillna_copy_framerR   s     r   r{   z$TestJSONArray.test_fillna_copy_frame   s!    &&|44444r   zFails with CoWc                 J    t                                          |           d S r   )r,   &test_equals_same_data_different_objectr.   s     r   r}   z4TestJSONArray.test_equals_same_data_different_object   !    66t<<<<<r   z$failing on np.array(self, dtype=str)c                 H    t                                                       dS )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                 H    t                                                       dS )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022222r   c                 H    t                                                       dS )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                 H    t                                                       dS 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                 H    t                                                       dS r   )r,   test_groupby_extension_no_sortrD   s    r   r   z,TestJSONArray.test_groupby_extension_no_sort  s!     	..00000r   c                     t          |d                   dk    r5t          j                            d          }|                    |           t                                          ||           d S )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  sf    tAw<<1;$$,J$KKD%%%,,T3KLLLLLr   c                     |j         dv r5t          j                            d          }|                    |           t                                          ||           d S )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#  s^    !\11;$$,P$QQD%%%""477777r   z.ValueError: Must have equal len keys and valuec                 J    t                                          |           d S r   )r,   test_setitem_loc_scalar_mixedr.   s     r   r   z+TestJSONArray.test_setitem_loc_scalar_mixed)  s!    --d33333r   c                 J    t                                          |           d S r   )r,   ,test_setitem_loc_scalar_multiple_homogoneousr.   s     r   r   z:TestJSONArray.test_setitem_loc_scalar_multiple_homogoneous-  s!    <<TBBBBBr   c                 J    t                                          |           d S r   )r,   test_setitem_iloc_scalar_mixedr.   s     r   r   z,TestJSONArray.test_setitem_iloc_scalar_mixed1  s!    ..t44444r   c                 J    t                                          |           d S r   )r,   -test_setitem_iloc_scalar_multiple_homogoneousr.   s     r   r   z;TestJSONArray.test_setitem_iloc_scalar_multiple_homogoneous5  s!    ==dCCCCCr   mask)TTTFFboolean)r   T)numpy-arrayzboolean-arrayzboolean-array-na)idsc                 \   |r6t           j                            d          }|                    |           nOt	          |t
          j                  s5t           j                            d          }|                    |           t                                          |||           d S )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  s      	&;$$U %  D %%%%D"*-- 	&;$$,P$QQD%%%!!$m<<<<<r   c                     |s5t           j                            d          }|                    |           t	                                          ||           d S )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  sX     	&;$$,<$==D%%%((}=====r   r   c                 L    t                                          ||           d S 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7mLLLLLr   idx)r   r   r   Int64)listinteger-arrayr   c                     |r5t           j                            d          }|                    |           t	                                          |||           d S )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  sd      	&;$$U %  D %%%**4mDDDDDr   r   r   r   r   r   r   z3list indices must be integers or slices, not NAType)marksc                 N    t                                          |||           d S 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8sMRRRRRr   r   c                 J    t                                          |           d S 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 r5t          j                            d          }|                    |           t                                          ||           d S )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  s`    7<,,,;$$,C$DDD%%%<<T<PPPPPr   r   c                 J    t                                          |           d S r   )r,   test_setitem_frame_2d_valuesr.   s     r   r   z*TestJSONArray.test_setitem_frame_2d_values  s!    ,,T22222r   setterlocNc                 L    t                                          ||           d S r   )r,   test_setitem_mask_broadcast)r/   r   r   r0   s      r   r   z)TestJSONArray.test_setitem_mask_broadcast  s%    
 	++D&99999r   z8cannot set using a slice indexer with a different lengthc                 L    t                                          ||           d S r   )r,   test_setitem_slicer   s      r   r   z TestJSONArray.test_setitem_slice  s%     	""477777r   zslice object is not iterablec                 J    t                                          |           d S r   )r,   test_setitem_loc_iloc_slicer.   s     r   r   z)TestJSONArray.test_setitem_loc_iloc_slice  s!    ++D11111r   c                 J    t                                          |           d S r   )r,   )test_setitem_slice_mismatch_length_raisesr.   s     r   r   z7TestJSONArray.test_setitem_slice_mismatch_length_raises  s!    99$?????r   c                 J    t                                          |           d S r   )r,   test_setitem_slice_arrayr.   s     r   r   z&TestJSONArray.test_setitem_slice_array  s!    ((.....r   zFail to raisec                 L    t                                          ||           d S 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                 J    t                                          |           d S r   )r,   .test_readonly_propagates_to_numpy_array_methodr.   s     r   r   z<TestJSONArray.test_readonly_propagates_to_numpy_array_method  s#     	>>tDDDDDr   z+only integer scalar arrays can be convertedc                 J    t                                          |           d S 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                 N    t                                          |||           d S r   )r,   test_EA_types)r/   r   r   rj   r0   s       r   r   zTestJSONArray.test_EA_types  s'     	fdG4444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   s       [K   $ $ $ $ $ [FGG& & & & HG& [899- - - - :9- [899- - - - :9- [>??- - - - @?- [;<<    =< [m,,1 1 1 1 -,1
 [:;;% % % % <;% [:;;$ $ $ $ <;$8 8 8 8 8 [UVV6 6 6 6 WV6 [UVV6 6 6 6 WV6 [199998888		
     4 4 4 4 4
 ) ) ) ) Z) [CDD/ / / / ED/ [,	   ) ) ) ) ) [2332 2 2 2 432 [4554 4 4 4 654 [4557 7 7 7 657 [EFF5 5 5 5 GF5 [.//= = = = 0/= [DEE" " " " FE" 3 3 3 3 Z3 
/ 
/ 
/ 
/ Z
/ - - - - Z- 1 1 1 1 Z1M M M M M8 8 8 8 8 [NOO4 4 4 4 PO4 [NOOC C C C POC [NOO5 5 5 5 PO5 [NOOD D D D POD [BH55566BH555YGGGBHdD$ru5YGGG	

 A@@   	= 	= 	= 	= 	=> > > > > [M   M M M M M [	HBHYYYg6668K8KL444   
E E E E 
E [1beBHaAru%W555	
 _%    [FLk''P (    	
 S S S S  (S [.//= = = = 0/=Q Q Q Q Q [5663 3 3 3 763 [M    [Xt}55: : : : 65 : [I   8 8 8 8 8 [<==2 2 2 2 >=2 [<==@ @ @ @ >=@ [<==/ / / / >=/ [o..; ; ; ; /.; [P   E E E E E [KLL- - - - ML- [?@@[XX775 5 5 5 87 A@5 5 5 5 5r   r*   c                    | j         j        dk    r| j         |j         k    sJ t          j        t	          | j                            t                              | j        | j                  } t          j        t	          |j                            t                              |j        |j                  }t          j
        | |g|R i | d S )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    
 z&  zU[((((ydk((0011$)
 
 
 	el))&1122+
 
 

 4888888888r   c                 
   |                     dd          }t          j        | j        |j        |                     dd          |                     dd          |                     dd          |                     d	d          | d
           | j        dk    j        }|D ]}t          | |         ||         g|R i |  |                     |          } |                    |          }t          j        | |g|R i | d S )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6JJ}d33JJ}e44 **%8$??!!!    [F")E K K"49eCjJ4JJJ6JJJJ99U9##DJJuJ%%E$777777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          |                                |                                           t          j        |                     g d                    }d}t          j
        t          |	          5  t          ||           d d d            n# 1 swxY w Y   t          j
        t          |	          5  t          |                                |                                           d d d            d S # 1 swxY w Y   d S )
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!$$$ajjllAJJLL999
	$))III&&''A
!C	~S	1	1	1 ) )"1a((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
~S	1	1	1 > >!!**,,

===> > > > > > > > > > > > > > > > > >s$   -D

DD05E22E69E6)!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3
        & & &
 = = = / / /      e5 e5 e5 e5 e5D' e5 e5 e5P9 9 9$8 8 8,> > > > >r   