a
    oÝEbÁ+  ã                   @   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#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/ƒZ0G d.d/„ d/ee	j1ƒZ2G d0d1„ d1ee	j3ƒZ4G d2d3„ d3ee	j5ƒZ6dS )4é    N)Úbase)Ú	JSONArrayÚ	JSONDtypeÚ	make_datac                   C   s   t ƒ S ©N)r   © r   r   úe/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/extension/json/test_json.pyÚdtype   s    r	   c                  C   s.   t ƒ } t| d ƒt| d ƒkr&t ƒ } q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   s    r   c                   C   s   t jS r   )Ú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   Ú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   Ú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}|D ]&}| j|| || g|¢R i |¤Ž q^|j|d�}|j|d�}tj||g|¢R i |¤Ž d S )NÚobjZ	DataFrameZcheck_column_typeÚequivÚcheck_namesTÚcheck_exactFÚcheck_categoricalz.columns)Úexactr/   r0   r1   r-   r   )Úcolumns)	Úgetr&   Zassert_index_equalr3   Zdtypesr    r'   ZdropÚassert_frame_equal)r(   r)   r*   r+   r,   Úobj_typeZjsonsÚcolr   r   r   r5   c   s     



ù
$zBaseJSON.assert_frame_equalN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr'   r5   r   r   r   r   r   P   s   
r   c                   @   s   e Zd ZdS )Ú	TestDtypeN©r8   r9   r:   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 | g d¢¡¡}d}t	j
t|d	�� |  ||¡ W d   ƒ n1 sž0    Y  t	j
t|d	��$ |  | ¡ | ¡ ¡ W d   ƒ n1 sà0    Y  d S )
Nr   r
   r   r   r   r   )r   r   r
   zExtensionArray are different©Úmatch)r   ÚcollectionsÚUserDictr"   r#   r'   r5   Zto_frameZ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                    s   t ƒ  |¡ d S r   )ÚsuperÚtest_contains©rF   r   ©Ú	__class__r   r   rL   •   s    zTestInterface.test_contains)	r8   r9   r:   rH   rC   ÚmarkÚxfailrL   Ú__classcell__r   r   rN   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 dtyperI   c                 C   s   d S r   r   rM   r   r   r   Útest_from_dtypež   s    z TestConstructors.test_from_dtypezRecursionError, GH-33900c                    s   t ƒ  ||¡ d S r   )rK   Ú*test_series_constructor_no_data_with_index©rF   r	   r   rN   r   r   rU   £   s    z;TestConstructors.test_series_constructor_no_data_with_indexc                    s   t ƒ  ||¡ d S r   )rK   Ú,test_series_constructor_scalar_na_with_indexrV   rN   r   r   rW   ¨   s    z=TestConstructors.test_series_constructor_scalar_na_with_indexzcollection as scalar, GH-33901c                    s   t ƒ  ||¡ d S r   )rK   Ú)test_series_constructor_scalar_with_index)rF   r   r	   rN   r   r   rX   ­   s    z:TestConstructors.test_series_constructor_scalar_with_index)r8   r9   r:   rC   rP   ÚskiprT   rQ   rU   rW   rX   rR   r   r   rN   r   rS   �   s   
rS   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 NArI   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   ©rF   r   r   r   Ú
test_stack´   s    zTestReshaping.test_stackzdict for NAc                    s   t ƒ  ||¡S r   )rK   Útest_unstack)rF   r   r    rN   r   r   r]   ¼   s    zTestReshaping.test_unstack)
r8   r9   r:   rC   rP   rY   r\   rQ   r]   rR   r   r   rN   r   rZ   ³   s   
rZ   c                   @   s   e Zd ZdS )ÚTestGetitemNr=   r   r   r   r   r^   Ã   s   r^   c                   @   s   e Zd ZdS )Ú	TestIndexNr=   r   r   r   r   r_   Ç   s   r_   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 scalarrI   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 ra   r   r[   r   r   r   Útest_fillna_frameÐ   s    zTestMissing.test_fillna_frameN)r8   r9   r:   rC   rP   rY   rb   rc   r   r   r   r   r`   Ë   s   
r`   Z
UnhashablerI   c                   @   s   e Zd ZdS )Ú
TestReduceNr=   r   r   r   r   rd   Ø   s   rd   c                       s  e Zd Zedd„ ƒZedd„ ƒZe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 r   r   )rF   Zall_dataZdropnar   r   r   Útest_value_countsÝ   s    zTestMethods.test_value_countsc                 C   s   d S r   r   rM   r   r   r   Ú test_value_counts_with_normalizeá   s    z,TestMethods.test_value_counts_with_normalizec                 C   s   d S r   r   r[   r   r   r   Útest_sort_values_frameå   s    z"TestMethods.test_sort_values_frameÚ	ascendingTFc                    s   t ƒ  |||¡ d S r   )rK   Útest_sort_values)rF   r   ri   Úsort_by_keyrN   r   r   rj   ê   s    zTestMethods.test_sort_valuesc                    s   t ƒ  |||¡ d S r   )rK   Útest_sort_values_missing)rF   r   ri   rk   rN   r   r   rl   î   s    ÿz$TestMethods.test_sort_values_missingz#combine for JSONArray not supportedrI   c                 C   s   d S r   r   ©rF   Zdata_repeatedr   r   r   Útest_combine_leö   s    zTestMethods.test_combine_lec                 C   s   d S r   r   rm   r   r   r   Útest_combine_addú   s    zTestMethods.test_combine_addc                 C   s   d S r   r   rM   r   r   r   Útest_combine_firstþ   s    zTestMethods.test_combine_firstc                    s   t ƒ  ||¡ d S r   )rK   Útest_hash_pandas_object_works)rF   r   ÚkindrN   r   r   rq     s    z)TestMethods.test_hash_pandas_object_workszbroadcasting errorc                    s   t ƒ  ||¡ d S r   )rK   Útest_where_series)rF   r   r   rN   r   r   rs     s    zTestMethods.test_where_serieszCan't compare dicts.c                    s   t ƒ  |¡ d S r   )rK   Útest_searchsorted)rF   r   rN   r   r   rt     s    zTestMethods.test_searchsortedc                 C   s   d S r   r   )rF   r   r   Z	as_seriesr   r   r   Útest_equals  s    zTestMethods.test_equals)r8   r9   r:   Ú
unhashablerf   rg   rh   rC   rP   Zparametrizerj   rl   rY   rn   ro   rp   rq   rs   rt   ru   rR   r   r   rN   r   re   Ü   s0   





re   c                   @   s"   e Zd Zejjdd�dd„ ƒZdS )ÚTestCastingz$failing on np.array(self, dtype=str)rI   c                 C   s   dS )zŠThis 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)r8   r9   r:   rC   rP   rY   rx   r   r   r   r   rw     s   rw   c                       sZ   e Zd Zedd„ ƒZedd„ ƒZedd„ ƒZe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   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_applyc                 C   s   dS ©z‰
        This fails when we get to tm.assert_series_equal when left.index
        contains dictionaries, which are not hashable.
        Nr   r[   r   r   r   Útest_groupby_extension_agg9  s    z&TestGroupby.test_groupby_extension_aggc                 C   s   dS r|   r   r[   r   r   r   Útest_groupby_extension_no_sort@  s    z*TestGroupby.test_groupby_extension_no_sortz'GH#39098: Converts agg result to objectrI   c                    s   t ƒ  |¡ d S r   )rK   Útest_groupby_agg_extension)rF   r   rN   r   r   r   G  s    z&TestGroupby.test_groupby_agg_extension)r8   r9   r:   rv   rz   r{   r}   r~   rC   rP   rQ   r   rR   r   r   rN   r   ry   #  s   



ry   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 SeriesrI   )r   rC   rP   rQ   ÚnodeZ
add_markerrK   Útest_arith_frame_with_scalar)rF   r   Zall_arithmetic_operatorsÚrequestrP   rN   r   r   r‚   M  s    z.TestArithmeticOps.test_arith_frame_with_scalarc                 C   sD   t  |¡}tjtdd�� ||  W d   ƒ n1 s60    Y  d S )NÚunsupportedr?   )r"   r#   rC   rD   Ú	TypeError)rF   r   Zserr   r   r   Ú$test_add_series_with_extension_arrayS  s    
z6TestArithmeticOps.test_add_series_with_extension_arrayc                 C   s   d S r   r   r[   r   r   r   Útest_divmod_series_arrayX  s    z*TestArithmeticOps.test_divmod_series_arrayc                    s   t ƒ j|||td�S )N)Úexc)rK   Ú_check_divmod_opr…   )rF   ÚsÚopÚotherrˆ   rN   r   r   r‰   ]  s    z"TestArithmeticOps._check_divmod_op)	r8   r9   r:   r‚   r†   r‡   ÚNotImplementedErrorr‰   rR   r   r   rN   r   r€   L  s   r€   c                   @   s   e Zd ZdS )ÚTestComparisonOpsNr=   r   r   r   r   rŽ   a  s   rŽ   c                   @   s   e Zd ZdS )ÚTestPrintingNr=   r   r   r   r   r�   e  s   r�   )7rA   r   rC   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BaseConstructorsTestsrS   ZBaseReshapingTestsrZ   ZBaseGetitemTestsr^   ZBaseIndexTestsr_   ZBaseMissingTestsr`   rP   rY   rv   ZBaseNoReduceTestsrd   ZBaseMethodsTestsre   ZBaseCastingTestsrw   ZBaseGroupbyTestsry   ZBaseArithmeticOpsTestsr€   ZBaseComparisonOpsTestsrŽ   ZBasePrintingTestsr�   r   r   r   r   Ú<module>   sL   







*
:)