a
    d/                     @   s  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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 d.d/ d/ee
j3Z4G d0d1 d1ee
j5Z6d2d3 Z7d4d5 Z8d6d7 Z9dS )8    N)base)	JSONArray	JSONDtype	make_datac                   C   s   t  S N)r    r   r   n/var/www/html/stable-diffusion-webui/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_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_sorting2   s    r   c                   C   s   t jS r   )operatoreqr   r   r   r   na_cmp7   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dS )BaseJSONN__name__
__module____qualname__r   r   r   r   r   L   s   r   c                   @   s   e Zd ZdS )	TestDtypeNr   r   r   r   r   r"   P   s   r"   c                       s*   e Zd Zejjdd fddZ  ZS )TestInterfacez:comparison method not implemented for JSONArray (GH-37867)reasonc                    s   t  | d S r   )supertest_containsselfr   	__class__r   r   r'   U   s    zTestInterface.test_contains)r   r    r!   pytestmarkxfailr'   __classcell__r   r   r*   r   r#   T   s   r#   c                       sx   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	  Z
S )TestConstructorsz&not implemented constructor from dtyper$   c                    s   t  | d S r   )r&   test_from_dtyper(   r*   r   r   r1   ^   s    z TestConstructors.test_from_dtypezRecursionError, GH-33900c              	      s@   t  }z&t d t || W t | nt | 0 d S Nd   )sysgetrecursionlimitsetrecursionlimitr&   *test_series_constructor_no_data_with_indexr)   r	   na_value	rec_limitr*   r   r   r7   c   s
    
z;TestConstructors.test_series_constructor_no_data_with_indexc              	      s@   t  }z&t d t || W t | nt | 0 d S r2   )r4   r5   r6   r&   ,test_series_constructor_scalar_na_with_indexr8   r*   r   r   r;   n   s
    
z=TestConstructors.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 r2   )r4   r5   r6   r&   )test_series_constructor_scalar_with_index)r)   r   r	   r:   r*   r   r   r<   y   s
    
z:TestConstructors.test_series_constructor_scalar_with_index)r   r    r!   r,   r-   r.   r1   r7   r;   r<   r/   r   r   r*   r   r0   ]   s   

r0   c                       sD   e Zd Zejjdd fddZejjdd fddZ  ZS )TestReshapingzDifferent definitions of NAr$   c                    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   r>      s    zTestReshaping.test_stackzdict for NAc                    s   t  ||S r   )r&   test_unstack)r)   r   indexr*   r   r   r@      s    zTestReshaping.test_unstack)	r   r    r!   r,   r-   r.   r>   r@   r/   r   r   r*   r   r=      s   r=   c                   @   s   e Zd ZdS )TestGetitemNr   r   r   r   r   rB      s   rB   c                   @   s   e Zd ZdS )	TestIndexNr   r   r   r   r   rC      s   rC   c                       sD   e Zd Zejjdd fddZejjdd fddZ  ZS )TestMissingzSetting a dict as a scalarr$   c                    s   t    dS z;We treat dictionaries as a mapping in fillna, not a scalar.N)r&   test_fillna_seriesr?   r*   r   r   rF      s    zTestMissing.test_fillna_seriesc                    s   t    dS rE   )r&   test_fillna_framer?   r*   r   r   rG      s    zTestMissing.test_fillna_frame)	r   r    r!   r,   r-   r.   rF   rG   r/   r   r   r*   r   rD      s   rD   Z
Unhashabler$   c                   @   s   e Zd ZdS )
TestReduceNr   r   r   r   r   rH      s   rH   c                       s&  e Zd Ze fddZe fddZe 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 fddZejjdd	e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 fdd Z fd!d"Z  ZS )#TestMethodsc                    s   t  || d S r   )r&   test_value_counts)r)   Zall_dataZdropnar*   r   r   rJ      s    zTestMethods.test_value_countsc                    s   t  | d S r   )r&    test_value_counts_with_normalizer(   r*   r   r   rK      s    z,TestMethods.test_value_counts_with_normalizec                    s   t    d S r   )r&   test_sort_values_framer?   r*   r   r   rL      s    z"TestMethods.test_sort_values_frame	ascendingTFc                    s   t  ||| d S r   )r&   test_sort_values)r)   r   rM   sort_by_keyr*   r   r   rN      s    zTestMethods.test_sort_valuesc                    s   t  ||| d S r   )r&   test_sort_values_missing)r)   r   rM   rO   r*   r   r   rP      s    z$TestMethods.test_sort_values_missingz#combine for JSONArray not supportedr$   c                    s   t  | d S r   )r&   test_combine_le)r)   Zdata_repeatedr*   r   r   rQ      s    zTestMethods.test_combine_lezGcombine for JSONArray not supported - may pass depending on random data)r%   strictraisesc                    s   t  | d S r   )r&   test_combine_firstr(   r*   r   r   rT      s    zTestMethods.test_combine_firstzbroadcasting errorc                    s   t  || d S r   )r&   test_where_series)r)   r   r9   r*   r   r   rU      s    zTestMethods.test_where_serieszCan't compare dicts.c                    s   t  | d S r   )r&   test_searchsorted)r)   r   r*   r   r   rV      s    zTestMethods.test_searchsortedc                    s   t  ||| d S r   )r&   test_equals)r)   r   r9   Z	as_seriesr*   r   r   rW      s    zTestMethods.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   rX      s    z"TestMethods.test_fillna_copy_framec                    s.   |rt jjdd}|j| t | d S )NzFails with CoWr$   )r,   r-   r.   node
add_markerr&   &test_equals_same_data_different_object)r)   r   Zusing_copy_on_writerequestr-   r*   r   r   r[      s    z2TestMethods.test_equals_same_data_different_object)r   r    r!   
unhashablerJ   rK   rL   r,   r-   ZparametrizerN   rP   r.   rQ   AssertionErrorrT   rU   rV   rW   skiprX   r[   r/   r   r   r*   r   rI      s6   
rI   c                       s*   e Zd Zejjdd fddZ  ZS )TestCastingz$failing on np.array(self, dtype=str)r$   c                    s   t    dS )zThis currently fails in NumPy on np.array(self, dtype=str) with

        *** ValueError: setting an array element with a sequence
        N)r&   test_astype_strr?   r*   r   r   ra      s    zTestCasting.test_astype_str)r   r    r!   r,   r-   r.   ra   r/   r   r   r*   r   r`      s   r`   c                       sP   e Zd Ze fddZe fddZe fddZe fddZ  ZS )	TestGroupbyc                    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_transformr?   r*   r   r   rc     s    z,TestGroupby.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_applyr?   r*   r   r   rd     s    z(TestGroupby.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_aggr?   r*   r   r   rf     s    z&TestGroupby.test_groupby_extension_aggc                    s   t    dS re   )r&   test_groupby_extension_no_sortr?   r*   r   r   rg   "  s    z*TestGroupby.test_groupby_extension_no_sort)	r   r    r!   r]   rc   rd   rf   rg   r/   r   r   r*   r   rb     s   	rb   c                       s   e Zd Z 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 Seriesr$   )r   r,   r-   r.   rY   rZ   r&   test_arith_frame_with_scalar)r)   r   Zall_arithmetic_operatorsr\   r-   r*   r   r   ri   ,  s    z.TestArithmeticOps.test_arith_frame_with_scalar)r   r    r!   ri   r/   r   r   r*   r   rh   +  s   rh   c                       s   e Zd Z fddZ  ZS )TestComparisonOpsc                    s6   |j dv r$tjjdd}|j| t || d S )N)r   nez"Comparison methods not implementedr$   )r   r,   r-   r.   rY   rZ   r&   test_compare_array)r)   r   Zcomparison_opr\   r-   r*   r   r   rl   4  s    
z$TestComparisonOps.test_compare_array)r   r    r!   rl   r/   r   r   r*   r   rj   3  s   rj   c                   @   s   e Zd ZdS )TestPrintingNr   r   r   r   r   rm   ;  s   rm   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)rA   name)r	   ro   pdSeriesr   valuesZastypeobjectrA   tmZassert_series_equal)leftrightargskwargsr   r   r   custom_assert_series_equal?  s    ry   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~   rz   rn   )columns)	getrt   Zassert_index_equalr   ZdtypesrA   ry   ZdropZassert_frame_equal)ru   rv   rw   rx   Zobj_typeZjsonscolr   r   r   custom_assert_frame_equalQ  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 s0    Y  t	j
t|d	" t| |  W d    n1 s0    Y  d S )
Nr   r
   r   r   r   r   )r   r   r
   zSeries are different)match)r   collectionsUserDictrp   rq   ry   r   Zto_frameZtaker,   rS   r^   )r   r   r   msgr   r   r   test_custom_assertsg  s    

(r   ):r   r   r4   r,   Zpandasrp   Zpandas._testingZ_testingrt   Zpandas.tests.extensionr   Z!pandas.tests.extension.json.arrayr   r   r   Zfixturer	   r   r   r   r   r   r   r   ZBaseDtypeTestsr"   ZBaseInterfaceTestsr#   ZBaseConstructorsTestsr0   ZBaseReshapingTestsr=   ZBaseGetitemTestsrB   ZBaseIndexTestsrC   ZBaseMissingTestsrD   r-   r.   r]   ZBaseReduceTestsrH   ZBaseMethodsTestsrI   ZBaseCastingTestsr`   ZBaseGroupbyTestsrb   ZBaseArithmeticOpsTestsrh   ZBaseComparisonOpsTestsrj   ZBasePrintingTestsrm   ry   r   r   r   r   r   r   <module>   sP   






	(C)