B
    Y0d+                 @   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   W/var/www/html/venv/lib/python3.7/site-packages/pandas/tests/extension/json/test_json.pydtype   s    r   c              C   s2   t  } x"t| d t| d kr(t  } qW 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 )N)na_value)r   r   r   r   r   6   s    r   c               C   s   t jS )N)operatoreqr   r   r   r   na_cmp;   s    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   r   data_for_grouping@   s    r   c               @   s$   e Zd Zedd Zedd ZdS )BaseJSONc             O   st   |j jdkr\|j |j ksttjt|jt|j	|jd}tjt|jt|j	|jd}t
j||f|| d S )Njson)indexname)r   r   AssertionErrorpdSeriesr   valuesZ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}x(|D ] }| j|| || f|| q`W |j|d}|j|d}tj||f|| d S )NobjZ	DataFrameZcheck_column_typeequivcheck_namesTcheck_exactFcheck_categoricalz.columns)exactr-   r.   r/   r+   r   )columns)	getr$   Zassert_index_equalr1   Zdtypesr   r%   Zdropassert_frame_equal)r&   r'   r(   r)   r*   obj_typeZjsonscolr   r   r   r3   c   s    




 zBaseJSON.assert_frame_equalN)__name__
__module____qualname__classmethodr%   r3   r   r   r   r   r   P   s   r   c               @   s   e Zd ZdS )	TestDtypeN)r6   r7   r8   r   r   r   r   r:   z   s   r:   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|dddg}d}t	j
t|d	 | || W d Q R X t	j
t|d	 | | |  W d Q R X d S )
Nr   r	   r   r   r   r   r   zExtensionArray are different)match)r   collectionsUserDictr    r!   r%   r3   Zto_frameZtakepytestraisesr   )selfr   r   r   msgr   r   r   test_custom_asserts   s    
z!TestInterface.test_custom_assertsz:comparison method not implemented for JSONArray (GH-37867))reasonc                s   t  | d S )N)supertest_contains)rA   r   )	__class__r   r   rF      s    zTestInterface.test_contains)	r6   r7   r8   rC   r?   markxfailrF   __classcell__r   r   )rG   r   r;   ~   s   r;   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 dtype)rD   c             C   s   d S )Nr   )rA   r   r   r   r   test_from_dtype   s    z TestConstructors.test_from_dtypezRecursionError, GH-33900c                s   t  || d S )N)rE   *test_series_constructor_no_data_with_index)rA   r   r   )rG   r   r   rM      s    z;TestConstructors.test_series_constructor_no_data_with_indexc                s   t  || d S )N)rE   ,test_series_constructor_scalar_na_with_index)rA   r   r   )rG   r   r   rN      s    z=TestConstructors.test_series_constructor_scalar_na_with_indexzcollection as scalar, GH-33901c                s   t  || d S )N)rE   )test_series_constructor_scalar_with_index)rA   r   r   )rG   r   r   rO      s    z:TestConstructors.test_series_constructor_scalar_with_index)r6   r7   r8   r?   rH   skiprL   rI   rM   rN   rO   rJ   r   r   )rG   r   rK      s   rK   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 NA)rD   c             C   s   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   )rA   r   r   r   
test_stack   s    zTestReshaping.test_stackzdict for NAc                s   t  ||S )N)rE   test_unstack)rA   r   r   )rG   r   r   rS      s    zTestReshaping.test_unstack)
r6   r7   r8   r?   rH   rP   rR   rI   rS   rJ   r   r   )rG   r   rQ      s   rQ   c               @   s   e Zd ZdS )TestGetitemN)r6   r7   r8   r   r   r   r   rT      s   rT   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 scalar)rD   c             C   s   dS )z;We treat dictionaries as a mapping in fillna, not a scalar.Nr   )rA   r   r   r   test_fillna_series   s    zTestMissing.test_fillna_seriesc             C   s   dS )z;We treat dictionaries as a mapping in fillna, not a scalar.Nr   )rA   r   r   r   test_fillna_frame   s    zTestMissing.test_fillna_frameN)r6   r7   r8   r?   rH   rP   rV   rW   r   r   r   r   rU      s   rU   Z
Unhashable)rD   c               @   s   e Zd ZdS )
TestReduceN)r6   r7   r8   r   r   r   r   rX      s   rX   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   s   d S )Nr   )rA   Zall_dataZdropnar   r   r   test_value_counts   s    zTestMethods.test_value_countsc             C   s   d S )Nr   )rA   r   r   r   r    test_value_counts_with_normalize   s    z,TestMethods.test_value_counts_with_normalizec             C   s   d S )Nr   )rA   r   r   r   test_sort_values_frame   s    z"TestMethods.test_sort_values_framec                s   t  | d S )N)rE   test_argsort)rA   r   )rG   r   r   r]      s    zTestMethods.test_argsortc                s   t  | d S )N)rE   test_argsort_missing)rA   r   )rG   r   r   r^      s    z TestMethods.test_argsort_missing	ascendingTFc                s   t  ||| d S )N)rE   test_sort_values)rA   r   r_   sort_by_key)rG   r   r   r`      s    zTestMethods.test_sort_valuesc                s   t  ||| d S )N)rE   test_sort_values_missing)rA   r   r_   ra   )rG   r   r   rb      s    z$TestMethods.test_sort_values_missingz#combine for JSONArray not supported)rD   c             C   s   d S )Nr   )rA   data_repeatedr   r   r   test_combine_le   s    zTestMethods.test_combine_lec             C   s   d S )Nr   )rA   rc   r   r   r   test_combine_add   s    zTestMethods.test_combine_addc             C   s   d S )Nr   )rA   r   r   r   r   test_combine_first   s    zTestMethods.test_combine_firstc                s   t  || d S )N)rE   test_hash_pandas_object_works)rA   r   kind)rG   r   r   rg     s    z)TestMethods.test_hash_pandas_object_workszbroadcasting errorc                s   t  || d S )N)rE   test_where_series)rA   r   r   )rG   r   r   ri     s    zTestMethods.test_where_serieszCan't compare dicts.c                s   t  | d S )N)rE   test_searchsorted)rA   r   )rG   r   r   rj     s    zTestMethods.test_searchsortedc             C   s   d S )Nr   )rA   r   r   Z	as_seriesr   r   r   test_equals  s    zTestMethods.test_equals)r6   r7   r8   
unhashablerZ   r[   r\   r]   r^   r?   rH   parametrizer`   rb   rP   rd   re   rf   rg   ri   rj   rk   rJ   r   r   )rG   r   rY      s   rY   c               @   s"   e Zd Zejjdddd ZdS )TestCastingz$failing on np.array(self, dtype=str))rD   c             C   s   dS )zThis currently fails in NumPy on np.array(self, dtype=str) with

        *** ValueError: setting an array element with a sequence
        Nr   )rA   r   r   r   test_astype_str  s    zTestCasting.test_astype_strN)r6   r7   r8   r?   rH   rP   ro   r   r   r   r   rn     s   rn   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   s   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.
        Nr   )rA   r   r   r    test_groupby_extension_transform&  s    z,TestGroupby.test_groupby_extension_transformc             C   s   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.
        Nr   )rA   r   r   r   test_groupby_extension_apply/  s    
z(TestGroupby.test_groupby_extension_applyas_indexTFc                s   t  || d S )N)rE   test_groupby_extension_agg)rA   rs   r   )rG   r   r   rt   ;  s    z&TestGroupby.test_groupby_extension_aggz'GH#39098: Converts agg result to object)rD   c                s   t  | d S )N)rE   test_groupby_agg_extension)rA   r   )rG   r   r   ru   ?  s    z&TestGroupby.test_groupby_agg_extension)r6   r7   r8   rl   rq   rr   r?   rH   rm   rt   rI   ru   rJ   r   r   )rG   r   rp   %  s   	rp   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 Series)rD   )r
   r?   rH   rI   nodeZ
add_markerrE   test_arith_frame_with_scalar)rA   r   Zall_arithmetic_operatorsrequestrH   )rG   r   r   rx   E  s    z.TestArithmeticOps.test_arith_frame_with_scalarc          	   C   s0   t |}tjtdd ||  W d Q R X d S )Nunsupported)r<   )r    r!   r?   r@   	TypeError)rA   r   Zserr   r   r   $test_add_series_with_extension_arrayK  s    
z6TestArithmeticOps.test_add_series_with_extension_arrayc             C   s   d S )Nr   )rA   r   r   r   test_divmod_series_arrayP  s    z*TestArithmeticOps.test_divmod_series_arrayc                s   t  j|||tdS )N)exc)rE   _check_divmod_opr{   )rA   sopotherr~   )rG   r   r   r   U  s    z"TestArithmeticOps._check_divmod_op)	r6   r7   r8   rx   r|   r}   NotImplementedErrorr   rJ   r   r   )rG   r   rv   D  s   rv   c               @   s   e Zd ZdS )TestComparisonOpsN)r6   r7   r8   r   r   r   r   r   Y  s   r   c               @   s   e Zd ZdS )TestPrintingN)r6   r7   r8   r   r   r   r   r   ]  s   r   )5r=   r   r?   Zpandasr    Zpandas._testingZ_testingr$   Zpandas.tests.extensionr   Z!pandas.tests.extension.json.arrayr   r   r   Zfixturer   r   r   r   r   r   r   r   r   ZBaseDtypeTestsr:   ZBaseInterfaceTestsr;   ZBaseConstructorsTestsrK   ZBaseReshapingTestsrQ   ZBaseGetitemTestsrT   ZBaseMissingTestsrU   rH   rP   rl   ZBaseNoReduceTestsrX   ZBaseMethodsTestsrY   ZBaseCastingTestsrn   ZBaseGroupbyTestsrp   ZBaseArithmeticOpsTestsrv   ZBaseComparisonOpsTestsr   ZBasePrintingTestsr   r   r   r   r   <module>   s:   *
@