
    o[we/                        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 G d d          Z G d dee
j                  Z G d dee
j                  Z G d dee
j                  Z G d dee
j                  Z G d dee
j                   Z! G d dee
j"                  Z# G d dee
j$                  Z%ej&        '                    d          Z( G d de
j)                  Z* G d d ee
j+                  Z, G d! d"ee
j-                  Z. G d# d$ee
j/                  Z0 G d% d&ee
j1                  Z2 G d' d(ee
j3                  Z4 G d) d*ee
j5                  Z6d+ Z7d, Z8d- Z9dS ).    N)base)	JSONArray	JSONDtype	make_datac                      t                      S N)r        Elib/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   -   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   2   s    sAhS!H-...r
   c                      t           j        S r   )operatoreqr	   r
   r   na_cmpr#   7   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%   <   sQ    !H!H!!!H!H		
  r
   c                       e Zd ZdS )BaseJSONN__name__
__module____qualname__r	   r
   r   r'   r'   L           Dr
   r'   c                       e Zd ZdS )	TestDtypeNr(   r	   r
   r   r.   r.   P   r,   r
   r.   c                   `     e Zd Zej                            d           fd            Z xZS )TestInterfacez:comparison method not implemented for JSONArray (GH-37867)reasonc                 J    t                                          |           d S r   )supertest_containsselfr   	__class__s     r   r5   zTestInterface.test_containsU   s#    
 	d#####r
   )r)   r*   r+   pytestmarkxfailr5   __classcell__r8   s   @r   r0   r0   T   s_        [K   $ $ $ $ $ $ $ $ $r
   r0   c                   D    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	 xZ
S )	TestConstructorsz&not implemented constructor from dtyper1   c                 J    t                                          |           d S r   )r4   test_from_dtyper6   s     r   rA   z TestConstructors.test_from_dtype^   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setrecursionlimitr4   *test_series_constructor_no_data_with_indexr7   r   na_value	rec_limitr8   s       r   rH   z;TestConstructors.test_series_constructor_no_data_with_indexc   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rC   )rE   rF   rG   r4   ,test_series_constructor_scalar_na_with_indexrI   s       r   rN   z=TestConstructors.test_series_constructor_scalar_na_with_indexn   sq     )++		-!#&&&GG@@QQQ!),,,,,C!),,,,rL   zcollection as scalar, GH-33901c                     t          j                    }	 t          j        d           t                                          ||           t          j        |           d S # t          j        |           w xY wrC   )rE   rF   rG   r4   )test_series_constructor_scalar_with_index)r7   r   r   rK   r8   s       r   rP   z:TestConstructors.test_series_constructor_scalar_with_indexy   sq     )++		-!#&&&GG==dEJJJ!),,,,,C!),,,,rL   )r)   r*   r+   r9   r:   r;   rA   rH   rN   rP   r<   r=   s   @r   r?   r?   ]   s       [FGG& & & & HG& [899- - - - :9- [899- - - - :9- [>??- - - - @?- - - - -r
   r?   c                        e Zd Zej                            d           fd            Zej                            d           fd            Z xZS )TestReshapingzDifferent definitions of NAr1   c                 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)r4   
test_stackr7   r8   s    r   rT   zTestReshaping.test_stack   s!     	r
   zdict for NAc                 H    t                                          ||          S r   )r4   test_unstack)r7   r   indexr8   s      r   rW   zTestReshaping.test_unstack   s     ww##D%000r
   )	r)   r*   r+   r9   r:   r;   rT   rW   r<   r=   s   @r   rR   rR      s        [;<<    =< [m,,1 1 1 1 -,1 1 1 1 1r
   rR   c                       e Zd ZdS )TestGetitemNr(   r	   r
   r   rZ   rZ      r,   r
   rZ   c                       e Zd ZdS )	TestIndexNr(   r	   r
   r   r\   r\      r,   r
   r\   c                        e Zd Zej                            d           fd            Zej                            d           fd            Z xZS )TestMissingzSetting a dict as a scalarr1   c                 H    t                                                       dS z;We treat dictionaries as a mapping in fillna, not a scalar.N)r4   test_fillna_seriesrU   s    r   ra   zTestMissing.test_fillna_series   s!     	""$$$$$r
   c                 H    t                                                       dS r`   )r4   test_fillna_framerU   s    r   rc   zTestMissing.test_fillna_frame   s!     	!!#####r
   )	r)   r*   r+   r9   r:   r;   ra   rc   r<   r=   s   @r   r^   r^      s        [:;;% % % % <;% [:;;$ $ $ $ <;$ $ $ $ $r
   r^   
Unhashabler1   c                       e Zd ZdS )
TestReduceNr(   r	   r
   r   rf   rf      r,   r
   rf   c                       e Z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d            Z fdZ xZS )TestMethodsc                 L    t                                          ||           d S r   )r4   test_value_counts)r7   all_datadropnar8   s      r   rj   zTestMethods.test_value_counts   s#    !!(F33333r
   c                 J    t                                          |           d S r   )r4    test_value_counts_with_normalizer6   s     r   rn   z,TestMethods.test_value_counts_with_normalize   s!    0066666r
   c                 H    t                                                       d S r   )r4   test_sort_values_framerU   s    r   rp   z"TestMethods.test_sort_values_frame   s!     	&&(((((r
   	ascendingTFc                 N    t                                          |||           d S r   )r4   test_sort_values)r7   r   rq   sort_by_keyr8   s       r   rs   zTestMethods.test_sort_values   s&      !19kJJJJJr
   c                 N    t                                          |||           d S r   )r4   test_sort_values_missing)r7   r   rq   rt   r8   s       r   rv   z$TestMethods.test_sort_values_missing   s2     	(($i	
 	
 	
 	
 	
r
   z#combine for JSONArray not supportedr1   c                 J    t                                          |           d S r   )r4   test_combine_le)r7   data_repeatedr8   s     r   rx   zTestMethods.test_combine_le   s!    .....r
   zGcombine for JSONArray not supported - may pass depending on random data)r2   strictraisesc                 J    t                                          |           d S r   )r4   test_combine_firstr6   s     r   r}   zTestMethods.test_combine_first   s#     	""4(((((r
   zbroadcasting errorc                 L    t                                          ||           d S r   )r4   test_where_series)r7   r   rJ   r8   s      r   r   zTestMethods.test_where_series   s%    
 	!!$11111r
   zCan't compare dicts.c                 J    t                                          |           d S r   )r4   test_searchsorted)r7   r   r8   s     r   r   zTestMethods.test_searchsorted   s"    !!"233333r
   c                 N    t                                          |||           d S r   )r4   test_equals)r7   r   rJ   	as_seriesr8   s       r   r   zTestMethods.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   )r4   test_fillna_copy_frame)r7   r   r8   s     r   r   z"TestMethods.test_fillna_copy_frame   s!    &&|44444r
   c                     |r:t           j                            d          }|j                            |           t                                          |           d S )NzFails with CoWr1   )r9   r:   r;   node
add_markerr4   &test_equals_same_data_different_object)r7   r   using_copy_on_writerequestr:   r8   s        r   r   z2TestMethods.test_equals_same_data_different_object   sZ      	*;$$,<$==DL##D)))66t<<<<<r
   )r)   r*   r+   
unhashablerj   rn   rp   r9   r:   parametrizers   rv   r;   rx   AssertionErrorr}   r   r   r   skipr   r   r<   r=   s   @r   rh   rh      s       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= = = = = = = = =r
   rh   c                   `     e Zd Zej                            d           fd            Z xZS )TestCastingz$failing on np.array(self, dtype=str)r1   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)r4   test_astype_strrU   s    r   r   zTestCasting.test_astype_str   s!     	!!!!!r
   )r)   r*   r+   r9   r:   r;   r   r<   r=   s   @r   r   r      sX        [DEE" " " " FE" " " " "r
   r   c                   |     e Zd Ze fd            Ze fd            Ze fd            Ze fd            Z xZS )TestGroupbyc                 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)r4    test_groupby_extension_transformrU   s    r   r   z,TestGroupby.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)r4   test_groupby_extension_applyrU   s    r   r   z(TestGroupby.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)r4   test_groupby_extension_aggrU   s    r   r   z&TestGroupby.test_groupby_extension_agg  s!     	**,,,,,r
   c                 H    t                                                       dS r   )r4   test_groupby_extension_no_sortrU   s    r   r   z*TestGroupby.test_groupby_extension_no_sort"  s!     	..00000r
   )	r)   r*   r+   r   r   r   r   r   r<   r=   s   @r   r   r     s        3 3 3 3 Z3 
/ 
/ 
/ 
/ Z
/ - - - - Z- 1 1 1 1 Z1 1 1 1 1r
   r   c                        e Zd Z fdZ xZS )TestArithmeticOpsc                     t          |d                   dk    r:t          j                            d          }|j                            |           t                                          ||           d S )Nr   r   zraises in coercing to Seriesr1   )r   r9   r:   r;   r   r   r4   test_arith_frame_with_scalar)r7   r   all_arithmetic_operatorsr   r:   r8   s        r   r   z.TestArithmeticOps.test_arith_frame_with_scalar,  sh    tAw<<1;$$,J$KKDL##D))),,T3KLLLLLr
   )r)   r*   r+   r   r<   r=   s   @r   r   r   +  sA        M M M M M M M M Mr
   r   c                        e Zd Z fdZ xZS )TestComparisonOpsc                     |j         dv r:t          j                            d          }|j                            |           t                                          ||           d S )N)r"   nez"Comparison methods not implementedr1   )r)   r9   r:   r;   r   r   r4   test_compare_array)r7   r   comparison_opr   r:   r8   s        r   r   z$TestComparisonOps.test_compare_array4  s`    !\11;$$,P$QQDL##D)))""477777r
   )r)   r*   r+   r   r<   r=   s   @r   r   r   3  s8        8 8 8 8 8 8 8 8 8r
   r   c                       e Zd ZdS )TestPrintingNr(   r	   r
   r   r   r   ;  r,   r
   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)rX   name)r   r   pdSeriesr   valuesastypeobjectrX   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   dtypesrX   r   dropassert_frame_equal)r   r   r   r   obj_typejsonscols          r   custom_assert_frame_equalr   Q  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 different)match)r   collectionsUserDictr   r   r   r   to_frametaker9   r{   r   )r   r   r   msgs       r   test_custom_assertsr   g  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!   rE   r9   pandasr   pandas._testing_testingr   pandas.tests.extensionr   !pandas.tests.extension.json.arrayr   r   r   fixturer   r   r   r   r   r#   r%   r'   BaseDtypeTestsr.   BaseInterfaceTestsr0   BaseConstructorsTestsr?   BaseReshapingTestsrR   BaseGetitemTestsrZ   BaseIndexTestsr\   BaseMissingTestsr^   r:   r;   r   BaseReduceTestsrf   BaseMethodsTestsrh   BaseCastingTestsr   BaseGroupbyTestsr   BaseArithmeticOpsTestsr   BaseComparisonOpsTestsr   BasePrintingTestsr   r   r   r   r	   r
   r   <module>r      su        



            ' ' ' ' ' '                 & & &
 = = = / / /      	 	 	 	 	 	 	 		 	 	 	 	$- 	 	 	$ $ $ $ $Hd5 $ $ $%- %- %- %- %-x!; %- %- %-P1 1 1 1 1Hd5 1 1 1"	 	 	 	 	(D1 	 	 		 	 	 	 	$- 	 	 		$ 	$ 	$ 	$ 	$(D1 	$ 	$ 	$ [l33
	 	 	 	 	% 	 	 	@= @= @= @= @=(D1 @= @= @=F" " " " "(D1 " " "&1 &1 &1 &1 &1(D1 &1 &1 &1RM M M M M$"= M M M8 8 8 8 8$"= 8 8 8	 	 	 	 	8T3 	 	 	9 9 9$8 8 8,> > > > >r
   