o
    i}                     @  s   d dl mZ d dlmZ d dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dlmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZm Z m!Z! d d	l"m#Z# G d
d dZ$G dd de$Z%dS )    )annotations)datetimeN)	Timestamp)is_datetime64tz_dtypeis_integer_dtype)CategoricalDtype)
CategoricalIndexDatetimeIndexIndexIntervalIndex
MultiIndexPeriodIndex
RangeIndexSeriesTimedeltaIndexisna)Float64Index
Int64IndexNumericIndexUInt64Index)BaseMaskedArrayc                   @  s  e Zd ZU dZded< ejdd Zdadd	Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>d? Z#ej$%d@dAdB dCdB gdDdE Z&dFdG Z'ej$%dHdIdJgej$%dKdLdMgej$%dNdIdJgdOdP Z(dQdR Z)ej$j*dSdT Z+dUdV Z,dWdX Z-dYdZ Z.d[d\ Z/d]d^ Z0d_d` Z1dLS )bBasez/
    Base class for index sub-class tests.
    ztype[Index]
_index_clsc                 C     t dNzMethod not implementedNotImplementedErrorself r   V/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/indexes/common.pysimple_index/   s   zBase.simple_indexreturnr
   c                 C  r   r   r   r   r   r   r    create_index3   s   zBase.create_indexc                 C  sJ   d g d}tjt|d |   W d    d S 1 sw   Y  d S )N|)zNIndex\(\.\.\.\) must be called with a collection of some kind, None was passedzPDatetimeIndex\(\) must be called with a collection of some kind, None was passedzQTimedeltaIndex\(\) must be called with a collection of some kind, None was passedz:__new__\(\) missing 1 required positional argument: 'data'z2__new__\(\) takes at least 2 arguments \(1 given\)match)joinpytestraises	TypeErrorr   )r   msgr   r   r    test_pickle_compat_construction6   s   
"z$Base.test_pickle_compat_constructionc                 C  s   |}dt |j }tjt|d |d W d    n1 s!w   Y  tjt|d |dd W d    d S 1 s?w   Y  d S )Nz\This method is only implemented for DatetimeIndex, PeriodIndex and TimedeltaIndex; Got type r%         )type__name__r(   r)   r   shift)r   r!   idxr+   r   r   r    
test_shiftG   s   "zBase.test_shiftc                 C  sH   |}t jtdd t||g d W d    d S 1 sw   Y  d S )Nz"Index.name must be a hashable typer%   name)r(   r)   r*   r/   r   r!   r2   r   r   r     test_constructor_name_unhashableT   s   "z%Base.test_constructor_name_unhashablec                 C  s   |}t |ts%d|_t|}t|| t|dd}d|_t|| d S ddg|_t|}t|ttg dddddgd t|dd	gd}t|ttg ddddd	gd d S )
Nfoobarr4   ))r8   one)r8   two)r9   r:   )bazr;   )quxr:   )r=   r;   objectdtype)namesAB)
isinstancer   r5   r
   tmassert_index_equalrA   )r   r!   expectedresultr   r   r    test_create_index_existing_name[   s>   

z$Base.test_create_index_existing_namec           	      C  s  |}t |tr	J t|tu rd S t|jj}t|j}dd| dd| d| dg}tjt	|d |d  W d    n1 sDw   Y  dd| d	d
| d| dg}tjt	|d d|  W d    n1 sqw   Y  |
dd}tjt	|d |d  W d    n1 sw   Y  |
dd}tjt	|d d|  W d    n1 sw   Y  |
dd}tjt	|d |d  W d    n1 sw   Y  |
dd}tjt	|d d|  W d    d S 1 sw   Y  d S )Nr$   z'unsupported operand type\(s\) for \*: 'z' and 'int'zIcannot perform (__mul__|__truediv__|__floordiv__) with this index type: ()r%   r-   z1unsupported operand type\(s\) for \*: 'int' and ''zLcannot perform (__rmul__|__rtruediv__|__rfloordiv__) with this index type: (*/z//)rD   r   r/   r
   _datar0   r'   r(   r)   r*   replace)	r   r!   r2   typclslmsgrmsgdiv_errfloordiv_errr   r   r    test_numeric_compat   s\   








"zBase.test_numeric_compatc                 C  sv   |}t jtdd |  W d    n1 sw   Y  t jtdd |  W d    d S 1 s4w   Y  d S )Nzcannot perform allr%   zcannot perform any)r(   r)   r*   allanyr6   r   r   r    test_logical_compat   s   

"zBase.test_logical_compatc                 C  s   |}t tt|| d S N)rE   rF   evalreprr6   r   r   r    test_repr_roundtrip   s   zBase.test_repr_roundtripc                 C  sX   |}| d}tdd  t| dt|vsJ W d    d S 1 s%w   Y  d S )N2   zdisplay.max_seq_itemsz...)repeatpdoption_contextr\   strr6   r   r   r    test_repr_max_seq_item_setting   s   
"z#Base.test_repr_max_seq_item_settingc                 C  s:  i }t |tr|j|d< nt |tttfrd S |jtkr&|jdkr&|j|d< t	|}||j
fddi|}t|jrC|d|j}t |ttfrO|d }t|| t |trq|d|jdd|}tj|j|jd	d
 d S t |trxd S t	|tu rt |jtjs||j
fddi|}t|| t |jtrt|jj|jjsJ tj|jj|jjd	d
 t|jj|jjsJ tj|jj|jjd	d
 d S |jdkrt|jj|jjsJ tj|jj|jjd	d
 d S |jdkrt|j|jsJ d S t|j||j
fddi|}tj|j
|j
d	d
 d S )Nfreqbooleanr@   copyTUTCF)ordinalrf   same)
check_samezstring[python]zstring[pyarrow]r   ) rD   r   rd   r   r   r   r@   r>   inferred_typer/   valuesr   tz_localize
tz_converttzr	   r   
_with_freqrE   rF   asi8assert_numpy_array_equalr   r
   np_valuesr   shares_memoryrN   _mask_ndarrayr   )r   indexinit_kwargs
index_typerH   r   r   r    test_ensure_copied_data   sR   









zBase.test_ensure_copied_datac                 C  s   |j   | }|jr|dksJ d S ||d  | }|jdd}t|ttfs?t|t	u r9t|j
tj
r?||ks?J |jdkrJ||ksLJ d S d S )Nr   Tdeepr>   )_engineclear_mappingmemory_usageemptyget_locrD   r   r   r/   r
   r@   rs   rk   )r   rx   rH   result2result3r   r   r    test_memory_usage  s   

zBase.test_memory_usagec                 C  s8   t |trd S | }t| }tj||dd d S )NFcheck_dtype)rD   r   argsortrs   arrayrE   rr   )r   requestrx   rH   rG   r   r   r    test_argsort   s
   
zBase.test_argsortc                 C  s   t |}| }t|| t j|dd}|jdd}t|| t|ttfrld}tjt	|d t j|dd W d    n1 sDw   Y  d}tjt	|d t j|dd	 W d    d S 1 sew   Y  d S d S )
N	mergesort)kind%the 'axis' parameter is not supportedr%   r-   axisz&the 'order' parameter is not supported)ab)order)
rs   r   rE   rr   rD   r   r   r(   r)   
ValueError)r   rx   rH   rG   r+   r   r   r    test_numpy_argsort)  s    
	"zBase.test_numpy_argsortc                 C  s   d}|  }t|trtn|j}||j||jd}t	||| |}t
t|}||j||jd}t	||| d S )Nr.   r4   )rf   rD   r   r   _constructorrl   r_   r5   rE   rF   rs   arangelen)r   r!   repr2   new_index_clsrG   r   r   r    test_repeatB  s   zBase.test_repeatc                 C  sn   d}|}| |}tt ||| d}tjt|d tj ||dd W d    d S 1 s0w   Y  d S )Nr.   r   r%   r   r   )r_   rE   rF   rs   r(   r)   r   )r   r!   r   r2   rG   r+   r   r   r    test_numpy_repeatN  s   
"zBase.test_numpy_repeatc                 C  s   |}|}t |ttfr|d }dgt| }|||}|}t|| dgdgt|dd    }t|j	g|dd  
  |jd}|||}t|| d S )NTFr-   r?   )rD   r	   r   rp   r   whererE   rF   r
   	_na_valuetolistr@   )r   listlike_boxr!   klassr2   condrH   rG   r   r   r    
test_whereX  s   
"zBase.test_wherec                 C  s>   |dd }t |sd S |dd |d|d sJ d S )Nr-      r   )r   equalsinsert)r   rx   rH   r   r   r    test_insert_basej  s   &zBase.test_insert_basec                 C  s   t |dkr	t}nt}t |dkrd}nd}tj||d |dd W d    n1 s.w   Y  ddd	g}tjt|d |t |d
 d
 W d    n1 sVw   Y  tjt|d |t | d
 d
 W d    d S 1 syw   Y  d S )Nr   z5index (0|0.5) is out of bounds for axis 0 with size 0zBslice indices must be integers or None or have an __index__ methodr%   g      ?r8   r$   z5index -?\d+ is out of bounds for axis 0 with size \d+zloc must be an integer betweenr-   )r   r*   
IndexErrorr(   r)   r   r'   )r   rx   errr+   r   r   r    test_insert_out_of_boundss  s(   "zBase.test_insert_out_of_boundsc                 C  s   t |sd S t|trd S |dd  }|d}||sJ |j|jks'J |d d }|d}||s9J |j|jksAJ t |}d| d| }tjt|d || W d    d S 1 sew   Y  d S )Nr-   r   zindex z' is out of bounds for axis 0 with size r%   )	r   rD   r   deleter   r5   r(   r)   r   )r   rx   rG   rH   lengthr+   r   r   r    test_delete_base  s"   


"zBase.test_delete_basec                 C  s   t |trd S t|tu ot |jtj }||sJ || s%J |s1||t	s1J |t
|r:J |t|rDJ t |ts_|s_t|t	d}||sXJ ||s_J |jdkrm|t|roJ d S d S )Nr?   r-   )rD   r   r/   r
   r@   rs   r   rf   astyper>   listr   r   nlevelsr   )r   rx   	is_ea_idxsame_valuesr   r   r    test_equals  s"   

zBase.test_equalsc                 C  sX  |}t |}|dd }|dd |dd }|dd }d}tjt|d ||k W d    n1 s7w   Y  tdg| }tdg|d  dg }	t||k| t||k|	 t|}
t|dd }t|dd |dd }t|dd }tjt|d ||k W d    n1 sw   Y  t||
k| t||k|	 t	|
}t	|}t	|}t	|}tjt|d ||k W d    n1 sw   Y  t||k| t||k|	 tjtd	d ||k W d    n	1 sw   Y  tjtd	d ||k W d    n	1 s!w   Y  tjtd	d ||k W d    n	1 s=w   Y  d
}tjt|d ||k W d    n	1 s[w   Y  tjtd	d ||k W d    n	1 sww   Y  t
|tstdgt |d  ddg }|d }t||k| t||kt	| d S d S )Nr   r   r-   z)Lengths must match|could not be broadcastr%   TFzLengths must matchz3Can only compare identically-labeled Series objectsr.   )r   appendr(   r)   r   rs   r   rE   rr   r   rD   r   assert_series_equal)r   r!   index_anindex_bindex_cindex_dr+   	expected1	expected2array_aarray_barray_carray_dseries_aseries_bseries_cseries_d	expected3itemr   r   r    test_equals_op  sj   

 






 zBase.test_equals_opc                 C  s&   |}dd |D }|  |ksJ d S )Nc                 S     g | ]}t |qS r   rb   .0xr   r   r    
<listcomp>      z$Base.test_format.<locals>.<listcomp>)formatr   r!   r2   rG   r   r   r    test_format  s   zBase.test_formatc                 C  s4   |  g }| g ksJ |jdddgksJ d S )NTr4    )r   r   )r   	empty_idxr   r   r    test_format_empty  s   
zBase.test_format_emptyc                 C  s  t |dkrd S |jtkrd S t|trt|jrd S t|trI|jdd}d}tj	t
|d ||d  W d    d S 1 sBw   Y  d S |jdd}||d }t|| ||usbJ d}tj	t|d ||d g W d    n1 s~w   Y  |jdd}|j}tj|d< t||}d}tj	t
|d |j|d d	d
 W d    n1 sw   Y  tjdgt | td}d|d< t|j| |jdu sJ d S )Nr   Tr|   "isna is not defined for MultiIndexr%   z"'value' must be a scalar, passed: r-   zdoes not support 'downcast'infer)downcastFr?   )r   r@   boolrD   r   r   r   rf   r(   r)   r   fillnarE   rF   r*   rt   rs   nanr/   r   rr   _isnanhasnans)r   rx   r2   r+   rH   rl   rG   r   r   r    test_fillna  s@   

"
zBase.test_fillnac                 C  s   t |dkrt| tjg td d S t|tr>|	 }d}t
jt|d |  W d    d S 1 s7w   Y  d S |jsat| tjt |td t| tjt |td d S t|}t| | t| |  d S )Nr   r?   r   r%   )r   rE   rr   r   rs   r   r   rD   r   rf   r(   r)   r   r   zerosnotnaones)r   rx   r2   r+   rH   r   r   r    
test_nulls4  s   

""zBase.test_nullsc                 C  s$   |}|j rJ |d d j sJ d S Nr   )r   r6   r   r   r    
test_emptyF  s   
zBase.test_emptyc                 C  s0   |}|j r|j||d}||k sJ d S d S )N)how)	is_uniquer'   rW   )r   	join_typer!   r2   joinedr   r   r    test_join_self_uniqueL  s   zBase.test_join_self_uniquec                 C  s&   |}| dd }tj||dd d S )Nc                 S  s   | S rZ   r   )r   r   r   r    <lambda>V  s    zBase.test_map.<locals>.<lambda>equivexact)maprE   rF   )r   r!   r2   rH   r   r   r    test_mapR  s   zBase.test_mapmapperc                 C  s   dd t | |D S )Nc                 S  s   i | ]\}}||qS r   r   )r   eir   r   r    
<dictcomp>]  s    z!Base.<lambda>.<locals>.<dictcomp>)ziprl   rx   r   r   r    r   ]  r   zBase.<lambda>c                 C  s
   t | |S rZ   )r   r   r   r   r    r   ^  s   
 c           	      C  s   |}t |trtdt|  ||j|}||}tj||dd d }|j	r5t
}|jjdkr4|j}nt}|tjgt| |d}||||}t|| d S )Nzskipping tests for r   r   fr?   )rD   r   r(   skipr/   rl   r   rE   rF   (_is_backward_compat_public_numeric_indexr   r@   r   r   rs   r   r   )	r   r   r!   r2   identityrH   r@   r   rG   r   r   r    test_map_dictlikeZ  s    	

zBase.test_map_dictlikec                 C  s4   |}| t}tdd |D td}t|| d S )Nc                 S  r   r   r   r   r   r   r    r     r   z%Base.test_map_str.<locals>.<listcomp>r?   )r   rb   r
   r>   rE   rF   )r   r!   r2   rH   rG   r   r   r    test_map_str|  s   
zBase.test_map_strrf   TFr5   Nr8   orderedc           	      C  s   |}|r	| |}t|d}|j||d}t|||d}tj||dd t|  d d |}|j||d}t|||d}tj||dd |du rb|jd	|d}t||d
}tj||dd d S d S )N)r   )rf   )r5   r   Tr   r   )r5   r@   Fcategoryr4   )renamer   r   r   rE   rF   uniquer   )	r   rf   r5   r   r!   r2   r@   rH   rG   r   r   r    test_astype_category  s    

zBase.test_astype_categoryc                 C  s   |  }|jdu sJ |d d }|jdu sJ |d|d }|jdu s'J |dtj}|jdu s5J |dtj}|jdu sCJ d S )NTr   F)drop_duplicatesr   r   rs   r   )r   r!   rx   index_empty	index_dupindex_naindex_na_dupr   r   r    test_is_unique  s   zBase.test_is_uniquec                 C  s2   |}t t|}|j t t||ksJ d S rZ   )r   gcget_referrersr~   )r   r!   rx   	nrefs_prer   r   r    test_engine_reference_cycle  s   z Base.test_engine_reference_cyclec                 C  s~  |}d}t jt|d |d d d f }W d    n1 sw   Y  t|tjs/J t|t|tst jt|d |d }W d    n1 sJw   Y  t|tjs[J t|t jt|d |d }W d    n1 sqw   Y  t|tjsJ t|d S d}tj	t
|d |d  W d    n1 sw   Y  tj	t
|d |d  W d    d S 1 sw   Y  d S )Nz&Support for multi-dimensional indexingr%   TFzonly integers, slices)rE   assert_produces_warningFutureWarningrD   rs   ndarrayr/   r   r(   r)   r   )r   r!   r2   r+   resr   r   r    test_getitem_2d_deprecated  s,   




"zBase.test_getitem_2d_deprecatedc                 C  s.   |}| |d  | }|j|ju sJ d S r   )r   rf   _cache)r   r!   r2   rf   r   r   r    test_copy_shares_cache  s   zBase.test_copy_shares_cachec                 C  sX   |}| |d  | }|j|ju sJ ||j}|j|jus#J |ji ks*J d S r   )r   _viewr  _shallow_copyrN   )r   r!   r2   shallow_copyr   r   r    test_shallow_copy_shares_cache  s   z#Base.test_shallow_copy_shares_cachec              	   C  s   |d d }t ddt jddg}t|||ddg |ddg d ttdd	dtdd
dtj	tdd
dtdd	dgddj
}tdtdg}|d |ddg |d |ddg i}t||| d S )N   r-   r.   r   r      )g      ?g       @i        rg   )ro   z
2011-11-01z
2011-12-01)rs   r   r   rE   assert_dict_equalgroupbyr	   r   r`   NaTrl   r   )r   r!   r2   
to_groupbyex_keysrG   r   r   r    test_index_groupby  s&    



	$zBase.test_index_groupbyc                 C  s   |}t |}||}|j|jksJ tj|d | |dd tj||d  |dd |tt|d }tj||dd d S )NT)check_exactr.   )r   r   r@   rE   rF   taker   range)r   r!   rx   NrH   altr   r   r    test_append_preserves_dtype  s   
z Base.test_append_preserves_dtypec                 C  s   |}|j jdv r+| }t|j |jd}t|| t| }tj|t|dd d S |j jdkr4d}nd}t	j
t|d |  W d    n1 sKw   Y  t	j
t|d t|  W d    d S 1 shw   Y  d S )	N)r   ur4   Fr   r   z0ufunc 'invert' not supported for the input typeszbad operandr%   )r@   r   r
   rl   r5   rE   rF   r   r   r(   r)   r*   )r   r!   r2   r  rG   res2r+   r   r   r    test_inv
  s    
"zBase.test_inv)r"   r
   )2r0   
__module____qualname____doc____annotations__r(   fixturer!   r#   r,   r3   r7   rI   rV   rY   r]   rc   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   r  r  arm_slowr  r  r  r  r   r&  r)  r   r   r   r    r   (   sl   
 

5,8	
	?)

r   c                   @  sX   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd ZdS )NumericBasezJ
    Base class for numeric index (incl. RangeIndex) sub-class tests.
    c                 C  sD   | j }tddg|d}||}tjddg|jd}t|j| d S )Nr-   r.   r?   )r   r
   rs   r   r@   rE   rr   rN   )r   r@   	index_clsr2   rH   rG   r   r   r    test_constructor_unwraps_index(  s
   z*NumericBase.test_constructor_unwraps_indexc                 C     d S rZ   r   r   r   r   r    r   0  s   zNumericBase.test_wherec                 C  s"   |}|d }| |du sJ d S )Nr   F)$_can_hold_identifiers_and_holds_name)r   r!   r2   keyr   r   r    test_can_hold_identifiers4  s   z%NumericBase.test_can_hold_identifiersc                   s<   |}t dd |D   fdd|D }| |ksJ d S )Nc                 s  s    | ]	}t t|V  qd S rZ   )r   rb   r   r   r   r    	<genexpr><  s    z*NumericBase.test_format.<locals>.<genexpr>c                   s   g | ]	}t | qS r   )rb   ljustr   	max_widthr   r    r   =  s    z+NumericBase.test_format.<locals>.<listcomp>)maxr   r   r   r;  r    r   9  s   zNumericBase.test_formatc                 C  r5  rZ   r   r   r   r   r    rV   @  s   zNumericBase.test_numeric_compatc                 C  sX   |}| d|d }t|}|tu rt}||d gt| |jd}tj||dd d S )Nr   r?   Tr   )r   r/   r   r   r   r@   rE   rF   )r   r!   rx   rH   rQ   rG   r   r   r    test_insert_non_naC  s   zNumericBase.test_insert_non_nac                 C  s   |}|}|t ju rt|d t jgt|dd   td}n&t|d tjgt|dd   }|jrC|j	j
dkr?t||j	d}nt|}|d|}tj||dd d S )Nr   r-   r?   r   Tr   )r`   r  r
   r   r>   r   rs   r   r   r@   r   r   r   rE   rF   )r   nulls_fixturer!   rx   na_valrG   rH   r   r   r    test_insert_naQ  s   
("zNumericBase.test_insert_nac                 C  s   | j }|tu rtd}n	|tjddd}tjdddd }t|}|d }t|| d| }t|| t|}tjddd}|| }t|| t| }tjddd}|| }t|| d S )Nr  int64r?   g	@float64)r   r   rs   r   r   rE   rF   r   )r   r3  r2   arrrG   fidxr   rH   r   r   r    $test_arithmetic_explicit_conversionse  s$   

z0NumericBase.test_arithmetic_explicit_conversionsc                 C  sT   |}d| }t jt|d | jg d|d W d    d S 1 s#w   Y  d S )Nz:Incorrect `dtype` passed: expected \w+(?: \w+)?, received r%   )r-   r.   r  r?   )r(   r)   r   r   )r   invalid_dtyper@   r+   r   r   r    test_invalid_dtype  s
   
"zNumericBase.test_invalid_dtypeN)r0   r*  r+  r,  r4  r   r8  r   rV   r>  rA  rF  rH  r   r   r   r    r2  #  s    r2  )&
__future__r   r   r  numpyrs   r(   pandas._libs.tslibsr   pandas.core.dtypes.commonr   r   pandas.core.dtypes.dtypesr   pandasr`   r   r	   r
   r   r   r   r   r   r   r   pandas._testing_testingrE   pandas.core.apir   r   r   r   pandas.core.arraysr   r   r2  r   r   r   r    <module>   s*    0      