
    Owg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"                  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        \/var/www/horilla/myenv/lib/python3.12/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(  r(t        |       S )z*Length-100 PeriodArray for semantics test.r      )r   lenr   )datas    r   r   r      sR     ;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                  ,    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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e fd       Ze fd       Ze fd       Zej                  j                  d d!d"g       fd#       Zej                  j                  d d!d"g       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d0       Z 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                  d!d!d!e-j\                  e-j\                  gdAB      gg dCD       fdE       Z/ fdFZ0ej                  j                  dG       fdH       Z1ej                  j                  dIg dJ e-jX                  g dJdKB       e+jX                  g dJ      gg dLD       fdM       Z2ej                  j                  dN      ej                  j                  dOdPdQdRe-j\                  gd"f ejf                  dPdQdRe-j\                  gd!ej                  j                  dS      T       e-jX                  dPdQdRe-j\                  gdKB      d"f e-jX                  dPdQdRe-j\                  gdKB      d"fgg dUD       fdV              Z4ej                  j                  dW       fdX       Z5 fdYZ6ej                  j                  dZ       fd[       Z7ej                  j                  dG      ej                  j                  d\d]d^g       fd_              Z8ej                  j                  d`       fda       Z9ej                  j                  db       fdc       Z:ej                  j                  db       fdd       Z;ej                  j                  db       fde       Z<ej                  j                  df       fdg       Z=ej                  j                  dh       fdi       Z>ej                  j                  dj      ej                  j                  dkdldmg       fdn              Z? xZ@S )o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(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                 $    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   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)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   sD    " 8]].c: 	G)j+~	 	 	s	   ;Ac                 &    t         |   ||       y r   )r,   test_value_counts)r/   all_datadropnar0   s      r   r[   zTestJSONArray.test_value_counts   s    !(F3r   c                 $    t         |   |       y r   )r,    test_value_counts_with_normalizer.   s     r   r_   z.TestJSONArray.test_value_counts_with_normalize   s    06r   c                 "    t         |           y r   )r,   test_sort_values_framerD   s    r   ra   z$TestJSONArray.test_sort_values_frame   s     	&(r   	ascendingTFc                 (    t         |   |||       y r   )r,   test_sort_values)r/   r    rb   sort_by_keyr0   s       r   rd   zTestJSONArray.test_sort_values   s     !19kJr   c                 (    t         |   |||       y r   )r,   test_sort_values_missing)r/   r"   rb   re   r0   s       r   rg   z&TestJSONArray.test_sort_values_missing   s     	($i	
r   z#combine for JSONArray not supportedc                 $    t         |   |       y 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                 $    t         |   |       y r   )r,   test_combine_firstr.   s     r   rm   z TestJSONArray.test_combine_first   s     	"4(r   zbroadcasting errorc                 &    t         |   ||       y r   )r,   test_where_series)r/   r   r;   r0   s      r   ro   zTestJSONArray.test_where_series   s    
 	!$1r   zCan't compare dicts.c                 $    t         |   |       y r   )r,   test_searchsorted)r/   r    r0   s     r   rq   zTestJSONArray.test_searchsorted   s    !"23r   c                 (    t         |   |||       y r   )r,   test_equals)r/   r   r;   	as_seriesr0   s       r   rs   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_frame)r/   r   r0   s     r   rv   z$TestJSONArray.test_fillna_copy_frame   s    &|4r   c                     |r1t         j                  j                  d      }|j                  |       t        |   |       y )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   s;     ;;$$,<$=D%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   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  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__rR   rx   ry   rz   r,   test_compare_array)r/   r   comparison_opr}   rx   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_mixed3  s    .t4r   c                 $    t         |   |       y r   )r,   -test_setitem_iloc_scalar_multiple_homogoneousr.   s     r   r   z;TestJSONArray.test_setitem_iloc_scalar_multiple_homogoneous7  s    =dCr   mask)TTTFFboolean)r   )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)	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;  sy     ;;$$U % D %D"**-;;$$,P$QD%!$m<r   c                     |s1t         j                  j                  d      }|j                  |       t        |   ||       y )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  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_naV  s     	7mLr   idx)r   r   r   Int64)listzinteger-arrayr   c                     |r1t         j                  j                  d      }|j                  |       t        |   |||       y )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\  sE     ;;$$U % D %*4m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                 (    t         |   |||       y 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sMRr   r   c                 $    t         |   |       y r   )r,   &test_setitem_scalar_key_sequence_raiser.   s     r   r   z4TestJSONArray.test_setitem_scalar_key_sequence_raisey  s    6t<r   c                     d|j                   j                  v r1t        j                  j	                  d      }|j                  |       t        |   ||       y )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}  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+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   r}   r0   s       r   r   zTestJSONArray.test_EA_types  s     	fdG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   sD   [[K  $$ [[FG& H& [[89- :- [[89- :- [[>?- @- [[;< = [[m,1 -1
 [[:;% <% [[:;$ <$ [[199998888		
 4 4 7 7 ) ) [[[4-8K 9K [[[4-8
 9
 [[CD/ E/ [[,	  )) [[232 42 [[454 64 [[457 67 [[EF5 G5= [[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 [[ST[[Aruuu%FLLAq"%% $fkk.?.?z.?.R RXXq!Q&g6>RXXq!Q&g6>	
 U  S US [[./= 0=Q [[563 73 [[M   [[Xt}5: 6: [[I  88 [[<=2 >2 [[<=@ >@ [[<=/ >/ [[o.; /; [[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 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!$ajjlAJJL9
		$))I&'A
!C	~S	1 )"1a() 
~S	1 >!!**,

=> >) )> >s   D<
)E<EE)!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
      & &
 = = / /    Z5D'' Z5z
9$8,>r   