o
    g+                     @   s  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d Zejdd Zejdd	 Zejd
d Zejdd Zejdd Zejdd Zejdd ZG dd dZG dd dee	jZG dd dee	jZG dd dee	jZG dd dee	jZG dd dee	j Z!G d d! d!ee	j"Z#ej$j%d"d#Z&G d$d% d%e	j'Z(G d&d' d'ee	j)Z*G d(d) d)ee	j+Z,G d*d+ d+ee	j-Z.G d,d- d-ee	j/Z0G d.d/ d/ee	j1Z2G d0d1 d1ee	j3Z4dS )2    N)base)	JSONArray	JSONDtype	make_datac                   C   s   t  S N)r    r   r   c/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/extension/json/test_json.pydtype      r	   c                  C   sD   t  } t| d t| d krt  } t| d t| d kst| S )z*Length-100 PeriodArray for semantics test.r      )r   lenr   )datar   r   r   r      s
   r   c                   C   s   t i ddigS )zLength 2 array with [NA, Valid]a
   r   r   r   r   r   data_missing&   s   r   c                   C   s   t ddiddidddgS )Nbr   c         r   r   r   r   r   r   r   data_for_sorting,   s   r   c                   C   s   t ddii ddigS )Nr   r   r   r   r   r   r   r   r   data_missing_for_sorting1   s   r   c                 C   s   | j S r   )na_value)r	   r   r   r   r   6   r
   r   c                   C   s   t jS r   )operatoreqr   r   r   r   na_cmp;   r
   r   c                
   C   s4   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   r   data_for_grouping@   s   r   c                   @   s$   e Zd Zedd Zedd ZdS )BaseJSONc                 O   sz   |j jdkr.|j |j ksJ tjt|jt|j|jd}tjt|jt|j|jd}t	j
||g|R i | d S )Njson)indexname)r	   r"   pdSeriesr   valuesastypeobjectr!   tmassert_series_equal)clsleftrightargskwargsr   r   r   r)   U   s   zBaseJSON.assert_series_equalc              
   O   s   | dd}tj|j|j| dd| dd| dd| d	d| d
d |jdkj}|D ]}| j|| || g|R i | q/|j|d}|j|d}tj||g|R i | d S )Nobj	DataFramecheck_column_typeequivcheck_namesTcheck_exactFcheck_categoricalz.columns)exactr3   r4   r5   r/   r    )columns)	getr(   assert_index_equalr7   dtypesr!   r)   dropassert_frame_equal)r*   r+   r,   r-   r.   obj_typejsonscolr   r   r   r<   c   s    




$zBaseJSON.assert_frame_equalN)__name__
__module____qualname__classmethodr)   r<   r   r   r   r   r   P   s
    
r   c                   @      e Zd ZdS )	TestDtypeNr@   rA   rB   r   r   r   r   rE   z       rE   c                       s2   e Zd Zdd Zejjdd fddZ  ZS )TestInterfacec                 C   s   t tdditdditddig}t|}| || | | |  t|g d}d}t	j
t|d	 | || W d    n1 sOw   Y  t	j
t|d	 | | |  W d    d S 1 sqw   Y  d S )
Nr   r   r   r   r   r   )r   r   r   zExtensionArray are differentmatch)r   collectionsUserDictr#   r$   r)   r<   to_frametakepytestraisesAssertionError)selfr   r   r   msgr   r   r   test_custom_asserts   s"   
"z!TestInterface.test_custom_assertsz:comparison method not implemented for JSONArray (GH-37867)reasonc                       t  | d S r   )supertest_containsrR   r   	__class__r   r   rY      s   zTestInterface.test_contains)	r@   rA   rB   rT   rO   markxfailrY   __classcell__r   r   r[   r   rH   ~   s    rH   c                       st   e Zd Zejjdddd Zejjdd fddZejjdd fdd	Z	ejjd
d fddZ
  ZS )TestConstructorsz&not implemented constructor from dtyperU   c                 C      d S r   r   rZ   r   r   r   test_from_dtype      z TestConstructors.test_from_dtypezRecursionError, GH-33900c                       t  || d S r   )rX   *test_series_constructor_no_data_with_indexrR   r	   r   r[   r   r   re         z;TestConstructors.test_series_constructor_no_data_with_indexc                    rd   r   )rX   ,test_series_constructor_scalar_na_with_indexrf   r[   r   r   rh      rg   z=TestConstructors.test_series_constructor_scalar_na_with_indexzcollection as scalar, GH-33901c                    rd   r   )rX   )test_series_constructor_scalar_with_index)rR   r   r	   r[   r   r   ri      rg   z:TestConstructors.test_series_constructor_scalar_with_index)r@   rA   rB   rO   r]   skiprb   r^   re   rh   ri   r_   r   r   r[   r   r`      s    
r`   c                       s@   e Zd Zejjdddd Zejjdd fddZ  Z	S )TestReshapingzDifferent definitions of NArU   c                 C      dS )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.
        Nr   rR   r   r   r   
test_stack       zTestReshaping.test_stackzdict for NAc                    s   t  ||S r   )rX   test_unstack)rR   r   r!   r[   r   r   rp      s   zTestReshaping.test_unstack)
r@   rA   rB   rO   r]   rj   rn   r^   rp   r_   r   r   r[   r   rk      s
    
rk   c                   @   rD   )TestGetitemNrF   r   r   r   r   rq      rG   rq   c                   @   s8   e Zd Zejjdddd Zejjdddd ZdS )TestMissingzSetting a dict as a scalarrU   c                 C   rl   z;We treat dictionaries as a mapping in fillna, not a scalar.Nr   rm   r   r   r   test_fillna_series   ro   zTestMissing.test_fillna_seriesc                 C   rl   rs   r   rm   r   r   r   test_fillna_frame   ro   zTestMissing.test_fillna_frameN)r@   rA   rB   rO   r]   rj   rt   ru   r   r   r   r   rr      s
    
rr   
UnhashablerU   c                   @   rD   )
TestReduceNrF   r   r   r   r   rw      rG   rw   c                       s$  e Zd Zedd Zedd Zedd Z fddZ fd	d
Ze	j
dddg fddZe	j
dddg fddZe	j
jdddd Ze	j
jdddd Ze	j
jdddd Ze fddZe	j
jdd fddZe	j
jdd fd d!Ze	j
jddd"d# Z  ZS )$TestMethodsc                 C   ra   r   r   )rR   all_datadropnar   r   r   test_value_counts      zTestMethods.test_value_countsc                 C   ra   r   r   rZ   r   r   r    test_value_counts_with_normalize   r|   z,TestMethods.test_value_counts_with_normalizec                 C   ra   r   r   rm   r   r   r   test_sort_values_frame   rc   z"TestMethods.test_sort_values_framec                    rW   r   )rX   test_argsortrR   r   r[   r   r   r         zTestMethods.test_argsortc                    rW   r   )rX   test_argsort_missing)rR   r   r[   r   r   r      r   z TestMethods.test_argsort_missing	ascendingTFc                       t  ||| d S r   )rX   test_sort_values)rR   r   r   sort_by_keyr[   r   r   r      s   zTestMethods.test_sort_valuesc                    r   r   )rX   test_sort_values_missing)rR   r   r   r   r[   r   r   r      s   z$TestMethods.test_sort_values_missingz#combine for JSONArray not supportedrU   c                 C   ra   r   r   rR   data_repeatedr   r   r   test_combine_le   r|   zTestMethods.test_combine_lec                 C   ra   r   r   r   r   r   r   test_combine_add   r|   zTestMethods.test_combine_addc                 C   ra   r   r   rZ   r   r   r   test_combine_first   r|   zTestMethods.test_combine_firstc                    rd   r   )rX   test_hash_pandas_object_works)rR   r   kindr[   r   r   r        z)TestMethods.test_hash_pandas_object_workszbroadcasting errorc                    rd   r   )rX   test_where_series)rR   r   r   r[   r   r   r     s   zTestMethods.test_where_serieszCan't compare dicts.c                    rW   r   )rX   test_searchsortedr   r[   r   r   r        zTestMethods.test_searchsortedc                 C   ra   r   r   )rR   r   r   	as_seriesr   r   r   test_equals  r|   zTestMethods.test_equals)r@   rA   rB   
unhashabler{   r}   r~   r   r   rO   r]   parametrizer   r   rj   r   r   r   r   r   r   r   r_   r   r   r[   r   rx      s6    





rx   c                   @   s"   e Zd Zejjdddd ZdS )TestCastingz$failing on np.array(self, dtype=str)rU   c                 C   rl   )zThis currently fails in NumPy on np.array(self, dtype=str) with

        *** ValueError: setting an array element with a sequence
        Nr   rm   r   r   r   test_astype_str  ro   zTestCasting.test_astype_strN)r@   rA   rB   rO   r]   rj   r   r   r   r   r   r     s    r   c                       s`   e Zd Zedd Zedd Zejdddg fdd	Z	ejj
d
d fddZ  ZS )TestGroupbyc                 C   rl   )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.
        Nr   rm   r   r   r    test_groupby_extension_transform&  ro   z,TestGroupby.test_groupby_extension_transformc                 C   rl   )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.
        Nr   rm   r   r   r   test_groupby_extension_apply/  ro   z(TestGroupby.test_groupby_extension_applyas_indexTFc                    rd   r   )rX   test_groupby_extension_agg)rR   r   r   r[   r   r   r   ;  r   z&TestGroupby.test_groupby_extension_aggz'GH#39098: Converts agg result to objectrU   c                    rW   r   )rX   test_groupby_agg_extension)rR   r   r[   r   r   r   ?  r   z&TestGroupby.test_groupby_agg_extension)r@   rA   rB   r   r   r   rO   r]   r   r   r^   r   r_   r   r   r[   r   r   %  s    

r   c                       s<   e Zd Z fddZdd Zdd Zef fdd	Z  ZS )	TestArithmeticOpsc                    s<   t |d dkrtjjdd}|j| t || d S )Nr   r   zraises in coercing to SeriesrU   )r   rO   r]   r^   node
add_markerrX   test_arith_frame_with_scalar)rR   r   all_arithmetic_operatorsrequestr]   r[   r   r   r   E  s   z.TestArithmeticOps.test_arith_frame_with_scalarc                 C   sF   t |}tjtdd ||  W d    d S 1 sw   Y  d S )NunsupportedrI   )r#   r$   rO   rP   	TypeError)rR   r   serr   r   r   $test_add_series_with_extension_arrayK  s   

"z6TestArithmeticOps.test_add_series_with_extension_arrayc                 C   ra   r   r   rm   r   r   r   test_divmod_series_arrayP  rc   z*TestArithmeticOps.test_divmod_series_arrayc                    s   t  j|||tdS )N)exc)rX   _check_divmod_opr   )rR   sopotherr   r[   r   r   r   U  s   z"TestArithmeticOps._check_divmod_op)	r@   rA   rB   r   r   r   NotImplementedErrorr   r_   r   r   r[   r   r   D  s
    r   c                   @   rD   )TestComparisonOpsNrF   r   r   r   r   r   Y  rG   r   c                   @   rD   )TestPrintingNrF   r   r   r   r   r   ]  rG   r   )5rK   r   rO   pandasr#   pandas._testing_testingr(   pandas.tests.extensionr   !pandas.tests.extension.json.arrayr   r   r   fixturer	   r   r   r   r   r   r   r   r   BaseDtypeTestsrE   BaseInterfaceTestsrH   BaseConstructorsTestsr`   BaseReshapingTestsrk   BaseGetitemTestsrq   BaseMissingTestsrr   r]   rj   r   BaseNoReduceTestsrw   BaseMethodsTestsrx   BaseCastingTestsr   BaseGroupbyTestsr   BaseArithmeticOpsTestsr   BaseComparisonOpsTestsr   BasePrintingTestsr   r   r   r   r   <module>   sL    







*
@