
    MhF                        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        W/var/www/html/env/lib/python3.13/site-packages/pandas/tests/extension/json/test_json.pydtyper      s
    ;r   c                      [        5       n [        U S   5      [        U S   5      :X  a*  [        5       n [        U S   5      [        U S   5      :X  a  M*  [        U 5      $ )z*Length-100 PeriodArray for semantics test.r      )r   lenr   )datas    r   r   r      sR     ;D d1g,#d1g,
&{ d1g,#d1g,
& T?r   c                       [        0 SS0/5      $ )zLength 2 array with [NA, Valid]a
   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                   6  ^  \ 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\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5       r\U 4S j5       r\U 4S  j5       r\R
                  R!                  S!S"S#/5      U 4S$ j5       r\R
                  R!                  S!S"S#/5      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=                  S05      U 4S1 j5       rU 4S2 j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                  " S"S"S"\.R^                  \.R^                  /SBSC9// SDQSE9U 4SF j5       r0U 4SG jr1\R
                  R                  SHS9U 4SI j5       r2\R
                  R!                  SJ/ SKQ\.RZ                  " / SKQSLSC9\,RZ                  " / SKQ5      // SMQSE9U 4SN j5       r3\R
                  R                  SOS9\R
                  R!                  SPSQSRSS\.R^                  /S#4\Rh                  " SQSRSS\.R^                  /S"\R
                  R                  STS9SU9\.RZ                  " SQSRSS\.R^                  /SLSC9S#4\.RZ                  " SQSRSS\.R^                  /SLSC9S#4// SVQSE9U 4SW j5       5       r5\R
                  R                  SXS9U 4SY j5       r6U 4SZ jr7\R
                  R                  S[S9U 4S\ j5       r8\R
                  R                  SHS9\R
                  R!                  S]S^S_/5      U 4S` j5       5       r9\R
                  R                  SaS9U 4Sb j5       r:\R
                  R                  ScS9U 4Sd j5       r;\R
                  R                  ScS9U 4Se j5       r<\R
                  R                  ScS9U 4Sf j5       r=\R
                  R                  SgS9U 4Sh j5       r>\R
                  R                  SiS9U 4Sj j5       r?\R
                  R                  SkS9\R
                  R!                  SlSmSn/5      U 4So j5       5       r@SprAU =rB$ )q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(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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   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)pytestraisesNotImplementedErrorr-   test_ffill_limit_area)r0   r   
limit_areainput_ilocsexpected_ilocsmsgr1   s         r   r_   #TestJSONArray.test_ffill_limit_area   s7    " 8]].c:G)+ ;::s	   7
Ac                 $   > [         TU ]  X5        g r   )r-   test_value_counts)r0   all_datadropnar1   s      r   rf   TestJSONArray.test_value_counts   s    !(3r   c                 $   > [         TU ]  U5        g r   )r-    test_value_counts_with_normalizer/   s     r   rk   .TestJSONArray.test_value_counts_with_normalize   s    06r   c                 "   > [         TU ]  5         g r   )r-   test_sort_values_framerJ   s    r   rn   $TestJSONArray.test_sort_values_frame   s     	&(r   	ascendingTFc                 &   > [         TU ]  XU5        g r   )r-   test_sort_values)r0   r    rp   sort_by_keyr1   s       r   rr   TestJSONArray.test_sort_values   s     !1kJr   c                 &   > [         TU ]  XU5        g r   )r-   test_sort_values_missing)r0   r"   rp   rs   r1   s       r   rv   &TestJSONArray.test_sort_values_missing   s     	($	
r   z#combine for JSONArray not supportedc                 $   > [         TU ]  U5        g r   )r-   test_combine_le)r0   data_repeatedr1   s     r   ry   TestJSONArray.test_combine_le   s    .r   zGcombine for JSONArray not supported - may pass depending on random data)r	   strictr]   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_frame)r0   r   r1   s     r   r   $TestJSONArray.test_fillna_copy_frame   s    &|4r   c                    > U(       a.  [         R                  R                  SS9nUR                  U5        [        TU ]  U5        g )NzFails with CoWr   )r\   markxfailapplymarkerr-   &test_equals_same_data_different_object)r0   r   using_copy_on_writerequestr   r1   s        r   r   4TestJSONArray.test_equals_same_data_different_object   s;     ;;$$,<$=D%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   r\   r   r   r   r-   test_arith_frame_with_scalar)r0   r   all_arithmetic_operatorsr   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__r\   r   r   r   r-   test_compare_array)r0   r   comparison_opr   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_mixed3  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_homogoneous7  s    =dCr   mask)TTTFFboolean)r   )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)	r\   r   r   r   
isinstancenpndarrayr-   test_setitem_mask)r0   r   r   box_in_seriesr   r   r1   s         r   r   TestJSONArray.test_setitem_mask;  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   )r\   r   r   r   r-   test_setitem_mask_raises)r0   r   r   r   r   r1   s        r   r   &TestJSONArray.test_setitem_mask_raisesO  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_naV  s     	7Lr   idx)r   r   r   Int64)listzinteger-arrayr   c                    > U(       a.  [         R                  R                  SS9nUR                  U5        [        TU ]  XU5        g )Nr   r   )r\   r   r   r   r-   test_setitem_integer_array)r0   r   r   r   r   r   r1   s         r   r   (TestJSONArray.test_setitem_integer_array\  sC     ;;$$U % D %*4m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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_raisesi  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_raisey  s    6t<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namer\   r   r   r   r-   ,test_setitem_with_expansion_dataframe_column)r0   r   full_indexerr   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+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   r   r1   s       r   r  TestJSONArray.test_EA_types  s     	fG4r   r   )Cr   
__module____qualname____firstlineno__r\   r   r   r.   r4   r<   rC   rF   rI   rM   rR   rU   parametrizer_   
unhashablerf   rk   rn   rr   rv   ry   AssertionErrorr~   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  __static_attributes____classcell__)r1   s   @r   r*   r*   Q   s4   [[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 [[HH56HH5YGHHdD$ruu5YG	

 A  	=	=> [[M  MM [[	BHHYg68KL4  
E
E [[ST[[Aruuu%LLAq"%% $fkk.?.?z.?.R XXq!Q&g6>XXq!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                    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_equalr0    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 differentrZ   )r   collectionsUserDictr  r  r  r0  to_frametaker\   r]   r	  )r   r   r   rc   s       r   test_custom_assertsr6    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)!r2  r$   r9   numpyr   r\   pandasr  pandas._testing_testingr  pandas.tests.extensionr   !pandas.tests.extension.json.arrayr   r   r   r   r   r  fixturer   r   r   r    r"   r&   r(   ExtensionTestsr*   r  r0  r6  r   r   r   <module>r?     s     
     '  [[l3
      & &
 = = / /    Z5D'' Z5z
9$8,>r   