a
    é´«jF  ã                   @   sú   d dl Z 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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ejƒZdd„ Zdd„ Zdd„ Z dS )é    N)Úbase)Ú	JSONArrayÚ	JSONDtypeÚ	make_dataZ
Unhashable©Úreasonc                   C   s   t ƒ S ©N)r   © r	   r	   úd/var/www/html/laksyashrimp/venv/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_sorting2   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_sorting7   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_groupingA   s    øÿr   c                       s  e Z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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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ej ddg d¢g d¢fdg d¢g d¢fdg d¢g d ¢fdg d!¢g d"¢fd#g d¢g d$¢fd#g d¢g d$¢fd#g d¢g d¢fd#g d!¢g d¢fg¡‡ fd%d&„ƒZe‡ fd'd(„ƒZe‡ fd)d*„ƒZe‡ fd+d,„ƒZej d-d.d/g¡‡ fd0d1„ƒZej d-d.d/g¡‡ fd2d3„ƒZejjd4d�‡ fd5d6„ƒZejjd7d/ed8�‡ fd9d:„ƒ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dAdB„ƒZej dC¡‡ fdDdE„ƒZ‡ fdFdG„ZejjdHd�‡ fdIdJ„ƒZ e‡ fdKdL„ƒZ!e‡ fdMdN„ƒZ"e‡ fdOdP„ƒZ#e‡ fdQdR„ƒZ$‡ fdSdT„Z%‡ fdUdV„Z&ejjdWd�‡ fdXdY„ƒZ'ejjdWd�‡ fdZd[„ƒZ(ejjdWd�‡ fd\d]„ƒZ)ejjdWd�‡ fd^d_„ƒZ*ejjd`e+ ,g da¢¡e-j,g da¢dbdc�e-j,d.d.d.e-j.e-j.gdbdc�gg dd¢de�‡ fdfdg„ƒZ/‡ fdhdi„Z0ejjdjd�‡ fdkdl„ƒZ1ejjdmg dn¢e-j,g dn¢dodc�e+ ,g dn¢¡gg dp¢de�‡ fdqdr„ƒZ2ejjdsd�ejjdtdudvdwe-j.gd/fej3dudvdwe-j.gd.ejjdxd�dy�e-j,dudvdwe-j.gdodc�d/fe-j,dudvdwe-j.gdodc�d/fgg dz¢de�‡ fd{d|„ƒƒZ4ejjd}d�‡ fd~d„ƒZ5‡ fd€d�„Z6ejjd‚d�‡ fdƒd„„ƒZ7ejjdjd�ej d…d†d‡g¡‡ fdˆd‰„ƒƒZ8ejjdŠd�‡ fd‹dŒ„ƒZ9e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<ejjd”d�‡ fd•d–„ƒZ=ejjd—d�‡ fd˜d™„ƒZ>ejjdšd�ej d›dœd�g¡‡ fdždŸ„ƒƒZ?‡  Z@S ) ÚTestJSONArrayz:comparison method not implemented for JSONArray (GH-37867)r   c                    s   t ƒ  |¡ d S r   )ÚsuperÚtest_contains©Úselfr   ©Ú	__class__r	   r
   r!   R   s    zTestJSONArray.test_containsz&not implemented constructor from dtypec                    s   t ƒ  |¡ d S r   )r    Útest_from_dtyper"   r$   r	   r
   r&   Y   s    zTestJSONArray.test_from_dtypezRecursionError, GH-33900c              	      s@   t  ¡ }z&t  d¡ tƒ  ||¡ W t  |¡ nt  |¡ 0 d S ©Néd   )ÚsysÚgetrecursionlimitÚsetrecursionlimitr    Ú*test_series_constructor_no_data_with_index©r#   r   Úna_valueÚ	rec_limitr$   r	   r
   r,   ^   s
    
z8TestJSONArray.test_series_constructor_no_data_with_indexc              	      s@   t  ¡ }z&t  d¡ tƒ  ||¡ W t  |¡ nt  |¡ 0 d S r'   )r)   r*   r+   r    Ú,test_series_constructor_scalar_na_with_indexr-   r$   r	   r
   r0   i   s
    
z:TestJSONArray.test_series_constructor_scalar_na_with_indexzcollection as scalar, GH-33901c              	      s@   t  ¡ }z&t  d¡ tƒ  ||¡ W t  |¡ nt  |¡ 0 d S r'   )r)   r*   r+   r    Ú)test_series_constructor_scalar_with_index)r#   r   r   r/   r$   r	   r
   r1   t   s
    
z7TestJSONArray.test_series_constructor_scalar_with_indexzDifferent definitions of NAc                    s   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)r    Ú
test_stack©r#   r$   r	   r
   r2      s    zTestJSONArray.test_stackzdict for NAc                    s   t ƒ  ||¡S r   )r    Útest_unstack)r#   r   Úindexr$   r	   r
   r4   ˆ   s    zTestJSONArray.test_unstackzSetting a dict as a scalarc                    s   t ƒ  ¡  dS ©z;We treat dictionaries as a mapping in fillna, not a scalar.N)r    Útest_fillna_seriesr3   r$   r	   r
   r7   Ž   s    z TestJSONArray.test_fillna_seriesc                    s   t ƒ  ¡  dS r6   )r    Útest_fillna_framer3   r$   r	   r
   r8   “   s    zTestJSONArray.test_fillna_framez'limit_area, input_ilocs, expected_ilocsZoutside)r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   Zinside)r   r   r   r   r   c                    sH   d}t jt|d��" tƒ  ||||¡ W d   ƒ n1 s:0    Y  d S )Nz'JSONArray does not implement limit_area©Úmatch)ÚpytestÚraisesÚNotImplementedErrorr    Útest_ffill_limit_area)r#   r   Z
limit_areaZinput_ilocsZexpected_ilocsÚmsgr$   r	   r
   r>   ˜   s
    ÿz#TestJSONArray.test_ffill_limit_areac                    s   t ƒ  ||¡ d S r   )r    Útest_value_counts)r#   Zall_dataZdropnar$   r	   r
   r@   ¯   s    zTestJSONArray.test_value_countsc                    s   t ƒ  |¡ d S r   )r    Ú test_value_counts_with_normalizer"   r$   r	   r
   rA   ³   s    z.TestJSONArray.test_value_counts_with_normalizec                    s   t ƒ  ¡  d S r   )r    Útest_sort_values_framer3   r$   r	   r
   rB   ·   s    z$TestJSONArray.test_sort_values_frameÚ	ascendingTFc                    s   t ƒ  |||¡ d S r   )r    Útest_sort_values)r#   r   rC   Úsort_by_keyr$   r	   r
   rD   ¼   s    zTestJSONArray.test_sort_valuesc                    s   t ƒ  |||¡ d S r   )r    Útest_sort_values_missing)r#   r   rC   rE   r$   r	   r
   rF   À   s    ÿz&TestJSONArray.test_sort_values_missingz#combine for JSONArray not supportedc                    s   t ƒ  |¡ d S r   )r    Útest_combine_le)r#   Zdata_repeatedr$   r	   r
   rG   È   s    zTestJSONArray.test_combine_lezGcombine for JSONArray not supported - may pass depending on random data)r   Ústrictr<   c                    s   t ƒ  |¡ d S r   )r    Útest_combine_firstr"   r$   r	   r
   rI   Ì   s    z TestJSONArray.test_combine_firstzbroadcasting errorc                    s   t ƒ  ||¡ d S r   )r    Útest_where_series)r#   r   r.   r$   r	   r
   rJ   Õ   s    zTestJSONArray.test_where_serieszCan't compare dicts.c                    s   t ƒ  |¡ d S r   )r    Útest_searchsorted)r#   r   r$   r	   r
   rK   Ü   s    zTestJSONArray.test_searchsortedc                    s   t ƒ  |||¡ d S r   )r    Útest_equals)r#   r   r.   Z	as_seriesr$   r	   r
   rL   à   s    zTestJSONArray.test_equalsz-fill-value is interpreted as a dict of valuesc                    s   t ƒ  |¡ d S r   )r    Útest_fillna_copy_frame)r#   r   r$   r	   r
   rM   ä   s    z$TestJSONArray.test_fillna_copy_framec                    s,   |rt jjdd�}| |¡ tƒ  |¡ d S )NzFails with CoWr   )r;   ÚmarkÚxfailÚapplymarkerr    Ú&test_equals_same_data_different_object)r#   r   Zusing_copy_on_writeÚrequestrN   r$   r	   r
   rQ   è   s    
z4TestJSONArray.test_equals_same_data_different_objectz$failing on np.array(self, dtype=str)c                    s   t ƒ  ¡  dS )zŠThis currently fails in NumPy on np.array(self, dtype=str) with

        *** ValueError: setting an array element with a sequence
        N)r    Útest_astype_strr3   r$   r	   r
   rS   ð   s    zTestJSONArray.test_astype_strc                    s   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)r    Ú test_groupby_extension_transformr3   r$   r	   r
   rT   ø   s    z.TestJSONArray.test_groupby_extension_transformc                    s   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)r    Útest_groupby_extension_applyr3   r$   r	   r
   rU     s    z*TestJSONArray.test_groupby_extension_applyc                    s   t ƒ  ¡  dS ©z‰
        This fails when we get to tm.assert_series_equal when left.index
        contains dictionaries, which are not hashable.
        N)r    Útest_groupby_extension_aggr3   r$   r	   r
   rW     s    z(TestJSONArray.test_groupby_extension_aggc                    s   t ƒ  ¡  dS rV   )r    Útest_groupby_extension_no_sortr3   r$   r	   r
   rX     s    z,TestJSONArray.test_groupby_extension_no_sortc                    s:   t |d ƒdkr(tjjdd�}| |¡ tƒ  ||¡ d S )Nr   r   zraises in coercing to Seriesr   )r   r;   rN   rO   rP   r    Útest_arith_frame_with_scalar)r#   r   Zall_arithmetic_operatorsrR   rN   r$   r	   r
   rY     s    
z*TestJSONArray.test_arith_frame_with_scalarc                    s4   |j dv r"tjjdd�}| |¡ tƒ  ||¡ d S )N)r   Únez"Comparison methods not implementedr   )Ú__name__r;   rN   rO   rP   r    Útest_compare_array)r#   r   Zcomparison_oprR   rN   r$   r	   r
   r\   %  s    

z TestJSONArray.test_compare_arrayz.ValueError: Must have equal len keys and valuec                    s   t ƒ  |¡ d S r   )r    Útest_setitem_loc_scalar_mixedr"   r$   r	   r
   r]   +  s    z+TestJSONArray.test_setitem_loc_scalar_mixedc                    s   t ƒ  |¡ d S r   )r    Ú,test_setitem_loc_scalar_multiple_homogoneousr"   r$   r	   r
   r^   /  s    z:TestJSONArray.test_setitem_loc_scalar_multiple_homogoneousc                    s   t ƒ  |¡ d S r   )r    Útest_setitem_iloc_scalar_mixedr"   r$   r	   r
   r_   3  s    z,TestJSONArray.test_setitem_iloc_scalar_mixedc                    s   t ƒ  |¡ d S r   )r    Ú-test_setitem_iloc_scalar_multiple_homogoneousr"   r$   r	   r
   r`   7  s    z;TestJSONArray.test_setitem_iloc_scalar_multiple_homogoneousÚmask)TTTFFÚboolean)r   )únumpy-arrayzboolean-arrayzboolean-array-na)Úidsc                    sV   |rt jjdd�}| |¡ n$t|tjƒsBt jjdd�}| |¡ tƒ  |||¡ d S )Nú<cannot set using a list-like indexer with a different lengthr   z"Issues unwanted DeprecationWarning)	r;   rN   rO   rP   Ú
isinstanceÚnpZndarrayr    Útest_setitem_mask)r#   r   ra   Úbox_in_seriesrR   rN   r$   r	   r
   rh   ;  s    
ÿ
zTestJSONArray.test_setitem_maskc                    s.   |st jjdd�}| |¡ tƒ  ||¡ d S )NúFails to raiser   )r;   rN   rO   rP   r    Útest_setitem_mask_raises)r#   r   ri   rR   rN   r$   r	   r
   rk   O  s    
z&TestJSONArray.test_setitem_mask_raisesre   c                    s   t ƒ  ||¡ d S r   )r    Ú'test_setitem_mask_boolean_array_with_na©r#   r   ri   r$   r	   r
   rl   V  s    z5TestJSONArray.test_setitem_mask_boolean_array_with_naÚidx)r   r   r   ZInt64)Úlistzinteger-arrayrc   c                    s0   |rt jjdd�}| |¡ tƒ  |||¡ d S )Nre   r   )r;   rN   rO   rP   r    Útest_setitem_integer_array)r#   r   rn   ri   rR   rN   r$   r	   r
   rp   \  s    ÿ
z(TestJSONArray.test_setitem_integer_arrayz3list indices must be integers or slices, not NATypezidx, box_in_seriesr   r   r   zGH-31948)Zmarks)z
list-Falsez	list-Truezinteger-array-Falsezinteger-array-Truec                    s   t ƒ  |||¡ d S r   )r    Ú(test_setitem_integer_with_missing_raises)r#   r   rn   ri   r$   r	   r
   rq   i  s    z6TestJSONArray.test_setitem_integer_with_missing_raisesrj   c                    s   t ƒ  |¡ d S r   )r    Ú&test_setitem_scalar_key_sequence_raiser"   r$   r	   r
   rr   y  s    z4TestJSONArray.test_setitem_scalar_key_sequence_raisec                    s6   d|j jv r$tjjdd�}| |¡ tƒ  ||¡ d S )NZ
full_sliceúslice is not iterabler   )ÚnodeÚnamer;   rN   rO   rP   r    Ú,test_setitem_with_expansion_dataframe_column)r#   r   Zfull_indexerrR   rN   r$   r	   r
   rv   }  s    
z:TestJSONArray.test_setitem_with_expansion_dataframe_columnrs   c                    s   t ƒ  |¡ d S r   )r    Útest_setitem_frame_2d_valuesr"   r$   r	   r
   rw   ƒ  s    z*TestJSONArray.test_setitem_frame_2d_valuesÚsetterÚlocNc                    s   t ƒ  ||¡ d S r   )r    Útest_setitem_mask_broadcast)r#   r   rx   r$   r	   r
   rz   ‡  s    z)TestJSONArray.test_setitem_mask_broadcastz8cannot set using a slice indexer with a different lengthc                    s   t ƒ  ||¡ d S r   )r    Útest_setitem_slicerm   r$   r	   r
   r{   Ž  s    z TestJSONArray.test_setitem_slicezslice object is not iterablec                    s   t ƒ  |¡ d S r   )r    Útest_setitem_loc_iloc_slicer"   r$   r	   r
   r|   ”  s    z)TestJSONArray.test_setitem_loc_iloc_slicec                    s   t ƒ  |¡ d S r   )r    Ú)test_setitem_slice_mismatch_length_raisesr"   r$   r	   r
   r}   ˜  s    z7TestJSONArray.test_setitem_slice_mismatch_length_raisesc                    s   t ƒ  |¡ d S r   )r    Útest_setitem_slice_arrayr"   r$   r	   r
   r~   œ  s    z&TestJSONArray.test_setitem_slice_arrayzFail to raisec                    s   t ƒ  ||¡ d S r   )r    Útest_setitem_invalid)r#   r   Zinvalid_scalarr$   r	   r
   r      s    z"TestJSONArray.test_setitem_invalidz+only integer scalar arrays can be convertedc                    s   t ƒ  |¡ d S r   )r    Útest_setitem_2d_valuesr"   r$   r	   r
   r€   ¤  s    z$TestJSONArray.test_setitem_2d_valueszdata type 'json' not understoodÚenginer   Úpythonc                    s   t ƒ  |||¡ d S r   )r    Útest_EA_types)r#   r�   r   rR   r$   r	   r
   rƒ   ¨  s    zTestJSONArray.test_EA_types)Ar[   Ú
__module__Ú__qualname__r;   rN   rO   r!   r&   r,   r0   r1   r2   r4   r7   r8   Zparametrizer>   Ú
unhashabler@   rA   rB   rD   rF   rG   ÚAssertionErrorrI   rJ   rK   rL   ÚskiprM   rQ   rS   rT   rU   rW   rX   rY   r\   r]   r^   r_   r`   rg   ÚarrayÚpdZNArh   rk   rl   rp   Úparamrq   rr   rv   rw   rz   r{   r|   r}   r~   r   r€   rƒ   Ú__classcell__r	   r	   r$   r
   r   Q   s  ÿ


øþ
ü
	ýù	ÿ$ýÿúöÿÿr   c                 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)r5   ru   )r   ru   rŠ   ÚSeriesr   ÚvaluesZastypeÚobjectr5   ÚtmZassert_series_equal)ÚleftÚrightÚargsÚkwargsr	   r	   r
   Úcustom_assert_series_equal®  s    ÿýr–   c              
   O   sº   |  dd¡}tj| j|j|  dd¡|  dd¡|  dd¡|  d	d¡|› d
�d� | jdkj}|D ]$}t| | || 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™   rš   r›   r—   r�   )Úcolumns)	Úgetr‘   Zassert_index_equalr�   Zdtypesr5   r–   ZdropZassert_frame_equal)r’   r“   r”   r•   Úobj_typeZjsonsÚcolr	   r	   r
   Úcustom_assert_frame_equalÀ  s     



ù
"r¡   c                  C   sæ   t t ddi¡t ddi¡t ddi¡gƒ} t | ¡}t||ƒ t| ¡ | ¡ ƒ t |  g d¢¡¡}d}t	j
t|d	�� t||ƒ W d   ƒ n1 s˜0    Y  t	j
t|d	��" t| ¡ | ¡ ƒ W d   ƒ n1 sØ0    Y  d S )
Nr   r   r   r   r   r   )r   r   r   zSeries are differentr9   )r   ÚcollectionsÚUserDictrŠ   rŽ   r–   r¡   Zto_frameZtaker;   r<   r‡   )r   r   r   r?   r	   r	   r
   Útest_custom_assertsÖ  s    ýÿ

(r¤   )!r¢   r   r)   Únumpyrg   r;   ZpandasrŠ   Zpandas._testingZ_testingr‘   Zpandas.tests.extensionr   Z!pandas.tests.extension.json.arrayr   r   r   rN   rO   r†   Zfixturer   r   r   r   r   r   r   ZExtensionTestsr   r–   r¡   r¤   r	   r	   r	   r
   Ú<module>   s:   






  _