
    A>i-G                        S SK r S SKrS SKrS SKrS SKrS SKrS SKJ	r
  S SKJr  S SKJrJrJr  \R"                  R%                  SS9r\R(                  S 5       r\R(                  S 5       r\R(                  S 5       r\R(                  S	 5       r\R(                  S
 5       r\R(                  S 5       r\R(                  S 5       r " S S\R8                  5      rS rS rS r g)    N)base)	JSONArray	JSONDtype	make_data
Unhashablereasonc                      [        5       $ N)r        d/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/tests/extension/json/test_json.pydtyper      s
    ;r   c                      [        S5      n [        U S   5      [        U S   5      :X  a+  [        S5      n [        U S   5      [        U S   5      :X  a  M+  [        U 5      $ )z'Length-10 JSONArray for semantics test.
   r      )r   lenr   )datas    r   r   r      sV     R=D d1g,#d1g,
&} d1g,#d1g,
& T?r   c                       [        0 SS0/5      $ )zLength 2 array with [NA, Valid]ar   r   r   r   r   data_missingr   ,   s     b3)_%%r   c                  ,    [        SS0SS0SSS./5      $ )Nbr   c         r   r   r   r   r   r   data_for_sortingr    2   s!    sAha*:;<<r   c                  &    [        SS00 SS0/5      $ )Nr   r   r   r   r   r   r   r   data_missing_for_sortingr"   7   s    sAhS!H-..r   c                  "    [         R                  $ r   )operatoreqr   r   r   na_cmpr&   <   s    ;;r   c                  D    [        SS0SS00 0 SSS.SSS.SS0SS0/5      $ )Nr   r   r   r   r   r   r   r   r   r   data_for_groupingr(   A   sF    !H!H!!!H!H		
 r   c                   ,  ^  \ rS rSr\R
                  R                  SS9U 4S j5       r\R
                  R                  SS9U 4S j5       r\R
                  R                  SS9U 4S j5       r	\R
                  R                  SS9U 4S	 j5       r
\R
                  R                  S
S9U 4S j5       r\R
                  R                  SS9U 4S j5       r\R
                  R                  SS9U 4S j5       r\R
                  R                  SS9U 4S j5       r\R
                  R                  SS9U 4S j5       rU 4S jr\R
                  R                  SS9U 4S j5       r\R
                  R                  SS9U 4S j5       r\R
                  R'                  SS/ SQ/ SQ4S/ SQ/ SQ4S/ SQ/ SQ4S/ SQ/ SQ4S/ SQ/ S Q4S/ SQ/ S Q4S/ SQ/ SQ4S/ SQ/ SQ4/5      U 4S! j5       rU 4S" jr\U 4S# j5       r\R
                  R                  S$S9U 4S% j5       r\R
                  R                  S&S'\S(9U 4S) j5       r\R
                  R                  S*S9U 4S+ j5       r\R
                  R                  S,S9U 4S- j5       r\R
                  R                  S,S9U 4S. j5       r\R
                  R=                  S/5      U 4S0 j5       r\R
                  R                  S1S9U 4S2 j5       r \R
                  R                  S3S9U 4S4 j5       r!\U 4S5 j5       r"\U 4S6 j5       r#\U 4S7 j5       r$\U 4S8 j5       r%U 4S9 jr&U 4S: jr'\R
                  R                  S;S9U 4S< j5       r(\R
                  R                  S;S9U 4S= j5       r)\R
                  R                  S;S9U 4S> j5       r*\R
                  R                  S;S9U 4S? j5       r+\R
                  R'                  S@\,RZ                  " / SAQ5      \.RZ                  " / SAQSBSC9\.RZ                  " SDSDSD\.R^                  \.R^                  /SBSC9// SEQSF9U 4SG j5       r0U 4SH jr1\R
                  R                  SIS9U 4SJ j5       r2\R
                  R'                  SK/ SLQ\.RZ                  " / SLQSMSC9\,RZ                  " / SLQ5      // SNQSF9U 4SO j5       r3\R
                  R'                  SKSPSQSR\.R^                  /\.RZ                  " SPSQSR\.R^                  /SMSC9/SSST/SF9\R
                  R'                  SUSD\Rh                  " S'\R
                  R                  SVS9SW9/5      U 4SX j5       5       r5\R
                  R                  SYS9U 4SZ j5       r6U 4S[ jr7\R
                  R                  S\S9U 4S] j5       r8\R
                  R                  SIS9\R
                  R'                  S^S_S`/5      U 4Sa j5       5       r9\R
                  R                  SbS9U 4Sc j5       r:\R
                  R                  SdS9U 4Se j5       r;\R
                  R                  SdS9U 4Sf j5       r<\R
                  R                  SdS9U 4Sg j5       r=\R
                  R                  ShS9U 4Si j5       r>\R
                  R                  SjS9U 4Sk j5       r?\R
                  R                  SlS9U 4Sm j5       r@\R
                  R                  SnS9\R
                  R'                  SoSpSq/5      U 4Sr j5       5       rASsrBU =rC$ )tTestJSONArrayQ   z:comparison method not implemented for JSONArray (GH-37867)r   c                 $   > [         TU ]  U5        g r   )supertest_containsselfr   	__class__s     r   r.   TestJSONArray.test_containsR   s    
 	d#r   z&not implemented constructor from dtypec                 $   > [         TU ]  U5        g r   )r-   test_from_dtyper/   s     r   r4   TestJSONArray.test_from_dtypeY   s     	%r   zRecursionError, GH-33900c                    > [         R                  " 5       n [         R                  " S5        [        TU ]  X5        [         R                  " U5        g ! [         R                  " U5        f = fNd   )sysgetrecursionlimitsetrecursionlimitr-   *test_series_constructor_no_data_with_indexr0   r   na_value	rec_limitr1   s       r   r<   8TestJSONArray.test_series_constructor_no_data_with_index^   sP     ))+		-!!#&G>uO!!),C!!),   %A A,c                    > [         R                  " 5       n [         R                  " S5        [        TU ]  X5        [         R                  " U5        g ! [         R                  " U5        f = fr7   )r9   r:   r;   r-   ,test_series_constructor_scalar_na_with_indexr=   s       r   rC   :TestJSONArray.test_series_constructor_scalar_na_with_indexi   sP     ))+		-!!#&G@Q!!),C!!),rA   zcollection as scalar, GH-33901c                    > [         R                  " 5       n [         R                  " S5        [        TU ]  X5        [         R                  " U5        g ! [         R                  " U5        f = fr7   )r9   r:   r;   r-   )test_series_constructor_scalar_with_index)r0   r   r   r?   r1   s       r   rF   7TestJSONArray.test_series_constructor_scalar_with_indext   sP     ))+		-!!#&G=dJ!!),C!!),rA   zDifferent definitions of NAc                 "   > [         TU ]  5         g)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r0   r1   s    r   rI   TestJSONArray.test_stack   s     	r   zdict for NAc                 "   > [         TU ]  X5      $ r   )r-   test_unstack)r0   r   indexr1   s      r   rM   TestJSONArray.test_unstack   s     w#D00r   zSetting a dict as a scalarc                 "   > [         TU ]  5         gz;We treat dictionaries as a mapping in fillna, not a scalar.N)r-   test_fillna_seriesrJ   s    r   rR    TestJSONArray.test_fillna_series   s     	"$r   c                 "   > [         TU ]  5         grQ   )r-   test_fillna_framerJ   s    r   rU   TestJSONArray.test_fillna_frame   s     	!#r   c                    > [         R                  " [        5         [        TU ]  U5        S S S 5        g ! , (       d  f       g = fr   )pytestraisesAssertionErrorr-   test_fillna_with_noner0   r   r1   s     r   r[   #TestJSONArray.test_fillna_with_none   s*     ]]>*G),7 +**s	   5
Az5fill value is a dictionary, takes incorrect code pathc                 $   > [         TU ]  U5        g r   r-   test_fillna_limit_framer\   s     r   r`   %TestJSONArray.test_fillna_limit_frame        	'5r   c                 $   > [         TU ]  U5        g r   r_   r\   s     r   test_fillna_limit_series&TestJSONArray.test_fillna_limit_series   rb   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                    > Sn[         R                  " [        US9   [        TU ]  XX45        S S S 5        g ! , (       d  f       g = f)Nz'JSONArray does not implement limit_areamatch)rX   rY   NotImplementedErrorr-   test_ffill_limit_area)r0   r   
limit_areainput_ilocsexpected_ilocsmsgr1   s         r   rl   #TestJSONArray.test_ffill_limit_area   s7    " 8]].c:G)+ ;::s	   7
Ac                 z   > [        U5      S:X  d  U(       a  UR                  [        5        [        TU ]  X5        g )Nr   )r   applymarker
unhashabler-   test_value_counts)r0   all_datadropnarequestr1   s       r   ru   TestJSONArray.test_value_counts   s,    x=B&
+!(3r   c                 "   > [         TU ]  5         g r   )r-   test_sort_values_framerJ   s    r   r{   $TestJSONArray.test_sort_values_frame   s     	&(r   z#combine for JSONArray not supportedc                 $   > [         TU ]  U5        g r   )r-   test_combine_le)r0   data_repeatedr1   s     r   r~   TestJSONArray.test_combine_le   s    .r   zGcombine for JSONArray not supported - may pass depending on random dataF)r	   strictrY   c                 $   > [         TU ]  U5        g r   )r-   test_combine_firstr/   s     r   r    TestJSONArray.test_combine_first   s     	"4(r   zbroadcasting errorc                 $   > [         TU ]  X5        g r   )r-   test_where_series)r0   r   r>   r1   s      r   r   TestJSONArray.test_where_series   s    
 	!$1r   zCan't compare dicts.c                 $   > [         TU ]  U5        g r   )r-   test_searchsorted)r0   r    r1   s     r   r   TestJSONArray.test_searchsorted   s    !"23r   c                 &   > [         TU ]  XU5        g r   )r-   test_equals)r0   r   r>   	as_seriesr1   s       r   r   TestJSONArray.test_equals   s    DI6r   z-fill-value is interpreted as a dict of valuesc                 $   > [         TU ]  U5        g r   )r-   test_fillna_copy_framer\   s     r   r   $TestJSONArray.test_fillna_copy_frame   s    &|4r   zFails with CoWc                 $   > [         TU ]  U5        g r   )r-   &test_equals_same_data_different_objectr/   s     r   r   4TestJSONArray.test_equals_same_data_different_object       6t<r   z$failing on np.array(self, dtype=str)c                 "   > [         TU ]  5         g)zzThis currently fails in NumPy on np.array(self, dtype=str) with

*** ValueError: setting an array element with a sequence
N)r-   test_astype_strrJ   s    r   r   TestJSONArray.test_astype_str   s     	!r   c                 "   > [         TU ]  5         g)z
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_transformrJ   s    r   r   .TestJSONArray.test_groupby_extension_transform   s     	02r   c                 "   > [         TU ]  5         g)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_applyrJ   s    r   r   *TestJSONArray.test_groupby_extension_apply   s     	,.r   c                 "   > [         TU ]  5         gzq
This fails when we get to tm.assert_series_equal when left.index
contains dictionaries, which are not hashable.
N)r-   test_groupby_extension_aggrJ   s    r   r   (TestJSONArray.test_groupby_extension_agg  s     	*,r   c                 "   > [         TU ]  5         gr   )r-   test_groupby_extension_no_sortrJ   s    r   r   ,TestJSONArray.test_groupby_extension_no_sort  s     	.0r   c                    > [        US   5      S:w  a.  [        R                  R                  SS9nUR	                  U5        [
        TU ]  X5        g )Nr   r   zraises in coercing to Seriesr   )r   rX   markxfailrs   r-   test_arith_frame_with_scalar)r0   r   all_arithmetic_operatorsrx   r   r1   s        r   r   *TestJSONArray.test_arith_frame_with_scalar  sF    tAw<1;;$$,J$KD%,TLr   c                    > UR                   S;   a.  [        R                  R                  SS9nUR	                  U5        [
        TU ]  X5        g )N)r%   nez"Comparison methods not implementedr   )__name__rX   r   r   rs   r-   test_compare_array)r0   r   comparison_oprx   r   r1   s        r   r    TestJSONArray.test_compare_array#  sD    !!\1;;$$,P$QD%"47r   z.ValueError: Must have equal len keys and valuec                 $   > [         TU ]  U5        g r   )r-   test_setitem_loc_scalar_mixedr/   s     r   r   +TestJSONArray.test_setitem_loc_scalar_mixed)  s    -d3r   c                 $   > [         TU ]  U5        g r   )r-   ,test_setitem_loc_scalar_multiple_homogoneousr/   s     r   r   :TestJSONArray.test_setitem_loc_scalar_multiple_homogoneous-  s    <TBr   c                 $   > [         TU ]  U5        g r   )r-   test_setitem_iloc_scalar_mixedr/   s     r   r   ,TestJSONArray.test_setitem_iloc_scalar_mixed1  s    .t4r   c                 $   > [         TU ]  U5        g r   )r-   -test_setitem_iloc_scalar_multiple_homogoneousr/   s     r   r   ;TestJSONArray.test_setitem_iloc_scalar_multiple_homogoneous5  s    =dCr   mask)TTTFFboolean)r   T)numpy-arrayzboolean-arrayzboolean-array-na)idsc                 ,  > U(       a/  [         R                  R                  SS9nUR                  U5        OM[	        U[
        R                  5      (       d.  [         R                  R                  SS9nUR                  U5        [        TU ]!  XU5        g )N<cannot set using a list-like indexer with a different lengthr   z"Issues unwanted DeprecationWarning)	rX   r   r   rs   
isinstancenpndarrayr-   test_setitem_mask)r0   r   r   box_in_seriesrx   r   r1   s         r   r   TestJSONArray.test_setitem_mask9  sz     ;;$$U % D %D"**--;;$$,P$QD%!$m<r   c                    > U(       d.  [         R                  R                  SS9nUR                  U5        [        TU ]  X5        g )NFails to raiser   )rX   r   r   rs   r-   test_setitem_mask_raises)r0   r   r   rx   r   r1   s        r   r   &TestJSONArray.test_setitem_mask_raisesM  s9    ;;$$,<$=D%(=r   r   c                 $   > [         TU ]  X5        g r   )r-   'test_setitem_mask_boolean_array_with_nar0   r   r   r1   s      r   r   5TestJSONArray.test_setitem_mask_boolean_array_with_naT  s     	7Lr   idx)r   r   r   Int64)listinteger-arrayr   c                    > U(       a.  [         R                  R                  SS9nUR                  U5        [        TU ]  XU5        g )Nr   r   )rX   r   r   rs   r-   test_setitem_integer_array)r0   r   r   r   rx   r   r1   s         r   r   (TestJSONArray.test_setitem_integer_arrayZ  sC     ;;$$U % D %*4mDr   r   r   r   r   r   r   z3list indices must be integers or slices, not NAType)marksc                 &   > [         TU ]  XU5        g r   )r-   (test_setitem_integer_with_missing_raises)r0   r   r   r   r1   s       r   r   6TestJSONArray.test_setitem_integer_with_missing_raisesg  s    * 	8MRr   r   c                 $   > [         TU ]  U5        g r   )r-   &test_setitem_scalar_key_sequence_raiser/   s     r   r   4TestJSONArray.test_setitem_scalar_key_sequence_raise~  r   r   c                    > SUR                   R                  ;   a.  [        R                  R	                  SS9nUR                  U5        [        TU ]  X5        g )N
full_sliceslice is not iterabler   )nodenamerX   r   r   rs   r-   ,test_setitem_with_expansion_dataframe_column)r0   r   full_indexerrx   r   r1   s        r   r   :TestJSONArray.test_setitem_with_expansion_dataframe_column  sH    7<<,,,;;$$,C$DD%<TPr   r   c                 $   > [         TU ]  U5        g r   )r-   test_setitem_frame_2d_valuesr/   s     r   r   *TestJSONArray.test_setitem_frame_2d_values  s    ,T2r   setterlocNc                 $   > [         TU ]  X5        g r   )r-   test_setitem_mask_broadcast)r0   r   r   r1   s      r   r   )TestJSONArray.test_setitem_mask_broadcast  s    
 	+D9r   z8cannot set using a slice indexer with a different lengthc                 $   > [         TU ]  X5        g r   )r-   test_setitem_slicer   s      r   r    TestJSONArray.test_setitem_slice  s     	"47r   zslice object is not iterablec                 $   > [         TU ]  U5        g r   )r-   test_setitem_loc_iloc_slicer/   s     r   r   )TestJSONArray.test_setitem_loc_iloc_slice  s    +D1r   c                 $   > [         TU ]  U5        g r   )r-   )test_setitem_slice_mismatch_length_raisesr/   s     r   r   7TestJSONArray.test_setitem_slice_mismatch_length_raises  s    9$?r   c                 $   > [         TU ]  U5        g r   )r-   test_setitem_slice_arrayr/   s     r   r   &TestJSONArray.test_setitem_slice_array  s    (.r   zFail to raisec                 $   > [         TU ]  X5        g r   )r-   test_setitem_invalid)r0   r   invalid_scalarr1   s      r   r   "TestJSONArray.test_setitem_invalid  s    $T:r   z?result readonly flag is incorrect and does not support na_valuec                 $   > [         TU ]  U5        g r   )r-   .test_readonly_propagates_to_numpy_array_methodr/   s     r   r  <TestJSONArray.test_readonly_propagates_to_numpy_array_method  s     	>tDr   z+only integer scalar arrays can be convertedc                 $   > [         TU ]  U5        g r   )r-   test_setitem_2d_valuesr/   s     r   r  $TestJSONArray.test_setitem_2d_values  s    &t,r   zdata type 'json' not understoodenginer   pythonc                 &   > [         TU ]  XU5        g r   )r-   test_EA_types)r0   r  r   rx   r1   s       r   r	  TestJSONArray.test_EA_types  s     	fG4r   r   )Dr   
__module____qualname____firstlineno__rX   r   r   r.   r4   r<   rC   rF   rI   rM   rR   rU   r[   r`   rd   parametrizerl   ru   rt   r{   r~   rZ   r   r   r   r   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	  __static_attributes____classcell__)r1   s   @r   r*   r*   Q   s8   [[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 [[HH56HH5YGHHdD$ruu5YG	

 A  	=	=> [[M  MM [[	BHHYg68KL4  
E
E [[1beeHHaAruu%W5	
 _%   [[LL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                    U R                   R                  S:X  a  U R                   UR                   :X  d   e[        R                  " [	        U R
                  R                  [        5      5      U R                  U R                  S9n [        R                  " [	        UR
                  R                  [        5      5      UR                  UR                  S9n[        R                  " X/UQ70 UD6  g )Njson)rN   r   )r   r   r  Seriesr   valuesastypeobjectrN   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                    UR                  SS5      n[        R                  " U R                  UR                  UR                  SS5      UR                  SS5      UR                  SS5      UR                  S	S5      U S
3S9  U R                  S:H  R
                  nU H  n[        X   X   /UQ70 UD6  M     U R                  US9n UR                  US9n[        R                  " X/UQ70 UD6  g )Nobj	DataFramecheck_column_typeequivcheck_namesTcheck_exactFcheck_categoricalz.columns)exactr(  r)  r*  r$  r  )columns)	getr  assert_index_equalr,  dtypesrN   r"  dropassert_frame_equal)r  r  r   r!  obj_typejsonscols          r   custom_assert_frame_equalr5    s    zz%-Hjj,g6JJ}d3JJ}e4 **%8$?j! [[F"))E"49ejJ4J6J  99U9#DJJuJ%E$777r   c                     [        [        R                  " SS05      [        R                  " SS05      [        R                  " SS05      /5      n [        R                  " U 5      n[        X5        [        UR                  5       UR                  5       5        [        R                  " U R                  / SQ5      5      nSn[        R                  " [        US	9   [        X5        S S S 5        [        R                  " [        US	9   [        UR                  5       UR                  5       5        S S S 5        g ! , (       d  f       NY= f! , (       d  f       g = f)
Nr   r   r   r   r   r   )r   r   r   zSeries are differentri   )r   collectionsUserDictr  r  r"  r5  to_frametakerX   rY   rZ   )r   r   r   rp   s       r   test_custom_assertsr;    s       #q*  #q*  #q*	
D 			$Aq$ajjlAJJL9
		$))I&'A
!C	~S	1"1( 
2 
~S	1!!**,

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