
    bMhF                        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        e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/extension/json/test_json.pydtyper      s    ;;r   c                     t                      } t          | d                   t          | d                   k    r:t                      } t          | d                   t          | d                   k    :t          |           S )z*Length-100 PeriodArray for semantics test.r      )r   lenr   )datas    r   r   r      sf     ;;D d1g,,#d1g,,
&
&{{ d1g,,#d1g,,
&
& T??r   c                  (    t          i ddig          S )zLength 2 array with [NA, Valid]a
   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                   .    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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e fd            Ze fd            Ze fd            Zej                            d d!d"g           fd#            Zej                            d d!d"g           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d0            Z 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,        d!d!d!e-j.        e-j.        gdAB          gg dCD           fdE            Z/ fdFZ0ej                            dG           fdH            Z1ej                            dIg dJ e-j,        g dJdKB           e+j,        g dJ          gg dLD           fdM            Z2ej                            dN          ej                            dOdPdQdRe-j.        gd"f ej3        dPdQdRe-j.        gd!ej                            dS          T           e-j,        dPdQdRe-j.        gdKB          d"f e-j,        dPdQdRe-j.        gdKB          d"fgg dUD           fdV                        Z4ej                            dW           fdX            Z5 fdYZ6ej                            dZ           fd[            Z7ej                            dG          ej                            d\d]d^g           fd_                        Z8ej                            d`           fda            Z9ej                            db           fdc            Z:ej                            db           fdd            Z;ej                            db           fde            Z<ej                            df           fdg            Z=ej                            dh           fdi            Z>ej                            dj          ej                            dkdldmg           fdn                        Z? xZ@S )o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(future_stack=True). 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   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)pytestraisesNotImplementedErrorr,   test_ffill_limit_area)r/   r   
limit_areainput_ilocsexpected_ilocsmsgr0   s         r   rU   z#TestJSONArray.test_ffill_limit_area   s    " 8].c::: 	 	GG))j+~  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   %AAAc                 L    t                                          ||           d S r   )r,   test_value_counts)r/   all_datadropnar0   s      r   r[   zTestJSONArray.test_value_counts   s#    !!(F33333r   c                 J    t                                          |           d S r   )r,    test_value_counts_with_normalizer.   s     r   r_   z.TestJSONArray.test_value_counts_with_normalize   s!    0066666r   c                 H    t                                                       d S r   )r,   test_sort_values_framerD   s    r   ra   z$TestJSONArray.test_sort_values_frame   s!     	&&(((((r   	ascendingTFc                 N    t                                          |||           d S r   )r,   test_sort_values)r/   r    rb   sort_by_keyr0   s       r   rd   zTestJSONArray.test_sort_values   s&      !19kJJJJJr   c                 N    t                                          |||           d S r   )r,   test_sort_values_missing)r/   r"   rb   re   r0   s       r   rg   z&TestJSONArray.test_sort_values_missing   s2     	(($i	
 	
 	
 	
 	
r   z#combine for JSONArray not supportedc                 J    t                                          |           d S r   )r,   test_combine_le)r/   data_repeatedr0   s     r   ri   zTestJSONArray.test_combine_le   s!    .....r   zGcombine for JSONArray not supported - may pass depending on random data)r	   strictrS   c                 J    t                                          |           d S r   )r,   test_combine_firstr.   s     r   rm   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   ro   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   rq   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   rs   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_frame)r/   r   r0   s     r   rv   z$TestJSONArray.test_fillna_copy_frame   s!    &&|44444r   c                     |r5t           j                            d          }|                    |           t	                                          |           d S )NzFails with CoWr   )rR   markxfailapplymarkerr,   &test_equals_same_data_different_object)r/   r   using_copy_on_writerequestrx   r0   s        r   r{   z4TestJSONArray.test_equals_same_data_different_object   sX      	&;$$,<$==D%%%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   rR   rx   ry   rz   r,   test_arith_frame_with_scalar)r/   r   all_arithmetic_operatorsr}   rx   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__rR   rx   ry   rz   r,   test_compare_array)r/   r   comparison_opr}   rx   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_mixed3  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_homogoneous7  s!    ==dCCCCCr   mask)TTTFFboolean)r   )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)	rR   rx   ry   rz   
isinstancenpndarrayr,   test_setitem_mask)r/   r   r   box_in_seriesr}   rx   r0   s         r   r   zTestJSONArray.test_setitem_mask;  s      	&;$$U %  D %%%%D"*-- 	&;$$,P$QQD%%%!!$m<<<<<r   c                     |s5t           j                            d          }|                    |           t	                                          ||           d S )NFails to raiser   )rR   rx   ry   rz   r,   test_setitem_mask_raises)r/   r   r   r}   rx   r0   s        r   r   z&TestJSONArray.test_setitem_mask_raisesO  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_naV  s%     	77mLLLLLr   idx)r   r   r   Int64)listzinteger-arrayr   c                     |r5t           j                            d          }|                    |           t	                                          |||           d S )Nr   r   )rR   rx   ry   rz   r,   test_setitem_integer_array)r/   r   r   r   r}   rx   r0   s         r   r   z(TestJSONArray.test_setitem_integer_array\  sd      	&;$$U %  D %%%**4mDDDDDr   z3list indices must be integers or slices, not NATypezidx, box_in_seriesr   r   r   zGH-31948)marks)z
list-Falsez	list-Truezinteger-array-Falsezinteger-array-Truec                 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_raisesi  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_raisey  s!    66t<<<<<r   c                     d|j         j        v r5t          j                            d          }|                    |           t                                          ||           d S )N
full_sliceslice is not iterabler   )nodenamerR   rx   ry   rz   r,   ,test_setitem_with_expansion_dataframe_column)r/   r   full_indexerr}   rx   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+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   r}   r0   s       r   r   zTestJSONArray.test_EA_types  s'     	fdG44444r   )Ar   
__module____qualname__rR   rx   ry   r-   r2   r9   r?   rA   rC   rF   rJ   rL   parametrizerU   
unhashabler[   r_   ra   rd   rg   ri   AssertionErrorrm   ro   rq   rs   skiprv   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   __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
 [:;;% % % % <;% [:;;$ $ $ $ <;$ [199998888		
      4 4 4 4 Z4 7 7 7 7 Z7 ) ) ) ) Z) [[4-88K K K K 98K [[4-88
 
 
 
 98
 [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= = = = = [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 [STT[Aruu%FLAq"% $fk.?.?z.?.R.R   RXq!Q&g666>RXq!Q&g666>	
 UTT   S S S S  UT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..; ; ; ; /.; [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 differentrP   )r   collectionsUserDictr   r   r   r   to_frametakerR   rS   r   )r   r   r   rY   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   rR   pandasr   pandas._testing_testingr   pandas.tests.extensionr   !pandas.tests.extension.json.arrayr   r   r   rx   ry   r   fixturer   r   r   r    r"   r&   r(   ExtensionTestsr*   r   r   r  r   r   r   <module>r     s        



                ' ' ' ' ' '          [l33
        & & &
 = = = / / /      Z5 Z5 Z5 Z5 Z5D' Z5 Z5 Z5z
9 9 9$8 8 8,> > > > >r   