B
    `(                 @   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/d0 d0ee	j1Z2G d1d2 d2ee	j3Z4dS )3    N)base   )	JSONArray	JSONDtype	make_datac               C   s   t  S )N)r    r   r   T/home/dcms/DCMS/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   )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_sorting.   s    r   c             C   s   | j S )N)na_value)r	   r   r   r   r   3   s    r   c               C   s   t jS )N)operatoreqr   r   r   r   na_cmp8   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%   R   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*   Zobj_typeZjsonscolr   r   r   r3   `   s    




 zBaseJSON.assert_frame_equalN)__name__
__module____qualname__classmethodr%   r3   r   r   r   r   r   M   s   r   c               @   s   e Zd ZdS )	TestDtypeN)r5   r6   r7   r   r   r   r   r9   w   s   r9   c               @   s   e Zd Zdd Zd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_assertsN)r5   r6   r7   rB   r   r   r   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)reasonc             C   s   d S )Nr   )r@   r   r   r   r   test_from_dtype   s    z TestConstructors.test_from_dtypezRecursionError, GH-33900c                s   t  || d S )N)super*test_series_constructor_no_data_with_index)r@   r	   r   )	__class__r   r   rG      s    z;TestConstructors.test_series_constructor_no_data_with_indexc                s   t  || d S )N)rF   ,test_series_constructor_scalar_na_with_index)r@   r	   r   )rH   r   r   rI      s    z=TestConstructors.test_series_constructor_scalar_na_with_indexzcollection as scalar, GH-33901c                s   t  || d S )N)rF   )test_series_constructor_scalar_with_index)r@   r   r	   )rH   r   r   rJ      s    z:TestConstructors.test_series_constructor_scalar_with_index)r5   r6   r7   r>   markskiprE   xfailrG   rI   rJ   __classcell__r   r   )rH   r   rC      s   rC   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   )r@   r   r   r   
test_stack   s    zTestReshaping.test_stackzdict for NAc                s   t  ||S )N)rF   test_unstack)r@   r   r   )rH   r   r   rQ      s    zTestReshaping.test_unstack)
r5   r6   r7   r>   rK   rL   rP   rM   rQ   rN   r   r   )rH   r   rO      s   rO   c               @   s   e Zd ZdS )TestGetitemN)r5   r6   r7   r   r   r   r   rR      s   rR   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   )r@   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   )r@   r   r   r   test_fillna_frame   s    zTestMissing.test_fillna_frameN)r5   r6   r7   r>   rK   rL   rT   rU   r   r   r   r   rS      s   rS   Z
Unhashable)rD   c               @   s   e Zd ZdS )
TestReduceN)r5   r6   r7   r   r   r   r   rV      s   rV   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   )r@   Zall_dataZdropnar   r   r   test_value_counts   s    zTestMethods.test_value_countsc             C   s   d S )Nr   )r@   r   r   r   r    test_value_counts_with_normalize   s    z,TestMethods.test_value_counts_with_normalizec             C   s   d S )Nr   )r@   r   r   r   test_sort_values_frame   s    z"TestMethods.test_sort_values_framec                s   t  | d S )N)rF   test_argsort)r@   r   )rH   r   r   r[      s    zTestMethods.test_argsortc                s   t  | d S )N)rF   test_argsort_missing)r@   r   )rH   r   r   r\      s    z TestMethods.test_argsort_missing	ascendingTFc                s   t  ||| d S )N)rF   test_sort_values)r@   r   r]   sort_by_key)rH   r   r   r^      s    zTestMethods.test_sort_valuesc                s   t  ||| d S )N)rF   test_sort_values_missing)r@   r   r]   r_   )rH   r   r   r`      s    z$TestMethods.test_sort_values_missingz#combine for JSONArray not supported)rD   c             C   s   d S )Nr   )r@   data_repeatedr   r   r   test_combine_le   s    zTestMethods.test_combine_lec             C   s   d S )Nr   )r@   ra   r   r   r   test_combine_add   s    zTestMethods.test_combine_addc             C   s   d S )Nr   )r@   r   r   r   r   test_combine_first   s    zTestMethods.test_combine_firstc                s   t  || d S )N)rF   test_hash_pandas_object_works)r@   r   kind)rH   r   r   re      s    z)TestMethods.test_hash_pandas_object_workszbroadcasting errorc                s   t  || d S )N)rF   test_where_series)r@   r   r   )rH   r   r   rg      s    zTestMethods.test_where_serieszCan't compare dicts.c                s   t  | d S )N)rF   test_searchsorted)r@   r   )rH   r   r   rh     s    zTestMethods.test_searchsortedc             C   s   d S )Nr   )r@   r   r   Z	as_seriesr   r   r   test_equals	  s    zTestMethods.test_equals)r5   r6   r7   
unhashablerX   rY   rZ   r[   r\   r>   rK   parametrizer^   r`   rL   rb   rc   rd   re   rg   rh   ri   rN   r   r   )rH   r   rW      s   rW   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   )r@   r   r   r   test_astype_str  s    zTestCasting.test_astype_strN)r5   r6   r7   r>   rK   rL   rm   r   r   r   r   rl     s   rl   c                   sF   e Zd Zedd Zedd Zejdddg 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   )r@   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   )r@   r   r   r   test_groupby_extension_apply%  s    
z(TestGroupby.test_groupby_extension_applyas_indexTFc                s   t  || d S )N)rF   test_groupby_extension_agg)r@   rq   r   )rH   r   r   rr   1  s    z&TestGroupby.test_groupby_extension_agg)r5   r6   r7   rj   ro   rp   r>   rK   rk   rr   rN   r   r   )rH   r   rn     s   	rn   c                   s8   e Zd Zdd Zdd Zdd Zef fdd	Z  ZS )	TestArithmeticOpsc             C   s   d S )Nr   )r@   r   Zall_arithmetic_operatorsr   r   r   
test_error7  s    zTestArithmeticOps.test_errorc          	   C   s0   t |}tjtdd ||  W d Q R X d S )Nunsupported)r;   )r    r!   r>   r?   	TypeError)r@   r   Zserr   r   r   $test_add_series_with_extension_array:  s    
z6TestArithmeticOps.test_add_series_with_extension_arrayc             C   s   d S )Nr   )r@   r   r   r   test_divmod_series_array?  s    z*TestArithmeticOps.test_divmod_series_arrayc                s   t  j|||tdS )N)exc)rF   _check_divmod_oprv   )r@   sopotherry   )rH   r   r   rz   D  s    z"TestArithmeticOps._check_divmod_op)	r5   r6   r7   rt   rw   rx   NotImplementedErrorrz   rN   r   r   )rH   r   rs   6  s   rs   c               @   s   e Zd ZdS )TestComparisonOpsN)r5   r6   r7   r   r   r   r   r   H  s   r   c               @   s   e Zd ZdS )TestPrintingN)r5   r6   r7   r   r   r   r   r   L  s   r   )5r<   r   r>   Zpandasr    Zpandas._testingZ_testingr$   Zpandas.tests.extensionr   arrayr   r   r   Zfixturer	   r   r   r   r   r   r   r   r   ZBaseDtypeTestsr9   ZBaseInterfaceTestsr:   ZBaseConstructorsTestsrC   ZBaseReshapingTestsrO   ZBaseGetitemTestsrR   ZBaseMissingTestsrS   rK   rL   rj   ZBaseNoReduceTestsrV   ZBaseMethodsTestsrW   ZBaseCastingTestsrl   ZBaseGroupbyTestsrn   ZBaseArithmeticOpsTestsrs   ZBaseComparisonOpsTestsr   ZBasePrintingTestsr   r   r   r   r   <module>   s:   *
@