a
    j=ic}                     @  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dd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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 )aBasez/
    Base class for index sub-class tests.
    ztype[Index]
_index_clsc                 C  s   t dd S NzMethod not implementedNotImplementedErrorself r   l/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/indexes/common.pysimple_index/   s    zBase.simple_indexr
   )returnc                 C  s   t dd S r   r   r   r   r   r   create_index3   s    zBase.create_indexc                 C  sH   d g d}tjt|d |   W d    n1 s:0    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 sB0    Y  tjt|d |dd W d    n1 s|0    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  sF   |}t jtdd  t||g d W d    n1 s80    Y  d S )Nz"Index.name must be a hashable typer$   name)r'   r(   r)   r.   r   r    r1   r   r   r    test_constructor_name_unhashableT   s    z%Base.test_constructor_name_unhashablec                 C  s   |}t |tsHd|_t|}t|| t|dd}d|_t|| njd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barr3   ))r7   one)r7   two)r8   r9   )Zbazr:   )quxr9   )r;   r:   objectdtype)namesAB)
isinstancer   r4   r
   tmassert_index_equalr?   )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 s0    Y  dd| d	d
| d| dg}tjt	|d d|  W d    n1 s0    Y  |
dd}tjt	|d |d  W d    n1 s&0    Y  |
dd}tjt	|d d|  W d    n1 sj0    Y  |
dd}tjt	|d |d  W d    n1 s0    Y  |
dd}tjt	|d d|  W d    n1 s0    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//)rB   r   r.   r
   _datar/   r&   r'   r(   r)   replace)	r   r    r1   typclsZlmsgZrmsgZdiv_errZfloordiv_errr   r   r   test_numeric_compat   sP    

&
&(((zBase.test_numeric_compatc                 C  st   |}t jtdd |  W d    n1 s00    Y  t jtdd |  W d    n1 sf0    Y  d S )Nzcannot perform allr$   zcannot perform any)r'   r(   r)   allanyr5   r   r   r   test_logical_compat   s
    &zBase.test_logical_compatc                 C  s   |}t tt|| d S N)rC   rD   evalreprr5   r   r   r   test_repr_roundtrip   s    zBase.test_repr_roundtripc                 C  sV   |}| d}tdd ( t| dt|vs4J W d    n1 sH0    Y  d S )N2   zdisplay.max_seq_itemsz...)repeatpdZoption_contextrV   strr5   r   r   r   test_repr_max_seq_item_setting   s
    
z#Base.test_repr_max_seq_item_settingc                 C  sB  i }t |tr|j|d< n2t |tttfr.d S |jtkrL|jdkrL|j|d< t	|}||j
fddi|}t|jr|d|j}t |ttfr|d }t|| t |tr|f |jdd|}tj|j|jd	d
 n\t |trnNt	|tu rt |jtjs||j
fddi|}t|| t |jtrt|jj|jjsXJ tj|jj|jjd	d
 t|jj|jjsJ tj|jj|jjd	d
 nn|jdkrt|jj|jjsJ tj|jj|jjd	d
 n.|jdkrt|j|jsJ n
t|jn*||j
fddi|}tj|j
|j
d	d
 d S )Nfreqbooleanr>   copyTUTCF)Zordinalr_   Zsame)Z
check_samezstring[python]zstring[pyarrow]) rB   r   r]   r   r   r   r>   r<   inferred_typer.   valuesr   Ztz_localizeZ
tz_converttzr	   r   
_with_freqrC   rD   Zasi8assert_numpy_array_equalr   r
   np_valuesr   Zshares_memoryrL   Z_maskZ_ndarrayr   )r   indexZinit_kwargsZ
index_typerF   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 rrt|j
tj
r~||ks~J |jdkr||ksJ d S )Nr   Tdeepr<   )_engineZclear_mappingZmemory_usageemptyget_locrB   r   r   r.   r
   r>   rf   ra   )r   rh   rF   Zresult2Z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Zcheck_dtype)rB   r   argsortrf   arrayrC   re   )r   requestrh   rF   rE   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rd}tjt	|d t j|dd W d    n1 s0    Y  d}tjt	|d t j|dd	 W d    n1 s0    Y  d S )
NZ	mergesort)kind%the 'axis' parameter is not supportedr$   r,   Zaxisz&the 'order' parameter is not supported)ab)order)
rf   rq   rC   re   rB   r   r   r'   r(   
ValueError)r   rh   rF   rE   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-   r3   )r_   rB   r   r   Z_constructorrb   rY   r4   rC   rD   rf   arangelen)r   r    repr1   new_index_clsrE   r   r   r   test_repeatB  s    zBase.test_repeatc                 C  sl   d}|}| |}tt ||| d}tjt|d  tj ||dd W d    n1 s^0    Y  d S )Nr-   rv   r$   r   rw   )rY   rC   rD   rf   r'   r(   r{   )r   r    r   r1   rE   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=   )rB   r	   r   rd   r~   whererC   rD   r
   Z	_na_valuetolistr>   )r   Zlistlike_boxr    klassr1   ZcondrF   rE   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   rh   rF   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\0    Y  ddd	g}tjt|d$ |t |d
 d
 W d    n1 s0    Y  tjt|d& |t | d
 d
 W d    n1 s0    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      ?r7   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   rh   errr*   r   r   r   test_insert_out_of_boundss  s"    *2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sNJ |d d }|d}||srJ |j|jksJ t |}d| d| }tjt|d || W d    n1 s0    Y  d S )Nr,   r   zindex z' is out of bounds for axis 0 with size r$   )	r~   rB   r   deleter   r4   r'   r(   r   )r   rh   rE   rF   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 }||s8J || sJJ |sb||t	sbJ |t
|rtJ |t|rJ t |ts|st|t	d}||sJ ||sJ |jdkr|t|rJ d S )Nr=   r,   )rB   r   r.   r
   r>   rf   r   r_   astyper<   listrr   r   Znlevelsr   )r   rh   Z	is_ea_idxZ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 sn0    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 s>0    Y  t||
k| t||k|	 t	|
}t	|}t	|}t	|}tjt|d ||k W d    n1 s0    Y  t||k| t||k|	 tjtd	d ||k W d    n1 s0    Y  tjtd	d ||k W d    n1 sF0    Y  tjtd	d ||k W d    n1 s~0    Y  d
}tjt|d ||k W d    n1 s0    Y  tjtd	d ||k W d    n1 s0    Y  t
|tsTtdgt |d  ddg }|d }t||k| t||kt	| 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{   rf   rr   rC   re   r   rB   r   assert_series_equal)r   r    Zindex_anZindex_bZindex_cZindex_dr*   Z	expected1Z	expected2Zarray_aZarray_bZarray_cZarray_dZseries_aZseries_bZseries_cZseries_dZ	expected3itemr   r   r   test_equals_op  sX    &
 ((((((( zBase.test_equals_opc                 C  s&   |}dd |D }|  |ks"J d S )Nc                 S  s   g | ]}t |qS r   r[   .0xr   r   r   
<listcomp>      z$Base.test_format.<locals>.<listcomp>)formatr   r    r1   rE   r   r   r   test_format  s    zBase.test_formatc                 C  s4   |  g }| g ksJ |jdddgks0J d S )NTr3    )r   r   )r   Z	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r6t|jr6d S t|tr|jdd}d}tj	t
|d ||d  W d    n1 s0    Y  n"|jdd}||d }t|| ||usJ d}tj	t|d  ||d g W d    n1  s0    Y  |jdd}|j}tj|d< t||}d}tj	t
|d" |j|d d	d
 W d    n1 sj0    Y  tjdgt | td}d|d< t|j| |jdu sJ d S )Nr   Trj   "isna is not defined for MultiIndexr$   z"'value' must be a scalar, passed: r,   zdoes not support 'downcast'Zinfer)ZdowncastFr=   )r~   r>   boolrB   r   r   r   r_   r'   r(   r   ZfillnarC   rD   r)   rg   rf   nanr.   rr   re   Z_isnanhasnans)r   rh   r1   r*   rF   rb   rE   r   r   r   test_fillna  s:    

00
2zBase.test_fillnac                 C  s   t |dkr(t| tjg td nt|trv|	 }d}t
jt|d |  W d    q1 sj0    Y  nn|jst| tjt |td t| tjt |td n*t|}t| | t| |  d S )Nr   r=   r   r$   )r~   rC   re   r   rf   rr   r   rB   r   r_   r'   r(   r   r   zerosZnotnaZones)r   rh   r1   r*   rF   r   r   r   
test_nulls4  s    
( zBase.test_nullsc                 C  s$   |}|j rJ |d d j s J d S Nr   )rm   r5   r   r   r   
test_emptyF  s    
zBase.test_emptyc                 C  s,   |}|j r(|j||d}||k s(J d S )N)how)	is_uniquer&   rQ   )r   Z	join_typer    r1   Z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 rT   r   )r   r   r   r   <lambda>V  r   zBase.test_map.<locals>.<lambda>equivexact)maprC   rD   )r   r    r1   rF   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>]  r   z!Base.<lambda>.<locals>.<dictcomp>)ziprb   rh   r   r   r   r   ]  r   zBase.<lambda>c                 C  s
   t | |S rT   )r   r   r   r   r   r   ^  r   c           	      C  s   |}t |tr"tdt|  ||j|}||}tj||dd d }|j	rjt
}|jjdkrn|j}nt}|tjgt| |d}||||}t|| d S )Nzskipping tests for r   r   fr=   )rB   r   r'   skipr.   rb   r   rC   rD   (_is_backward_compat_public_numeric_indexr   r>   ru   r   rf   r   r~   )	r   r   r    r1   identityrF   r>   r   rE   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  s   g | ]}t |qS r   r   r   r   r   r   r     r   z%Base.test_map_str.<locals>.<listcomp>r=   )r   r[   r
   r<   rC   rD   )r   r    r1   rF   rE   r   r   r   test_map_str|  s    
zBase.test_map_strr_   TFr4   Nr7   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 r|jd	|d}t||d
}tj||dd d S )N)r   )r_   )r4   r   Tr   r   )r4   r>   Fcategoryr3   )renamer   r   r   rC   rD   uniquer   )	r   r_   r4   r   r    r1   r>   rF   rE   r   r   r   test_astype_category  s    

zBase.test_astype_categoryc                 C  s   |  }|jdu sJ |d d }|jdu s0J |d|d }|jdu sNJ |dtj}|jdu sjJ |dtj}|jdu sJ d S )NTr   F)Zdrop_duplicatesr   r   rf   r   )r   r    rh   Zindex_emptyZ	index_dupZindex_naZ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 rT   )r~   gcZget_referrersrl   )r   r    rh   Z	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<0    Y  t|tjs^J t|t|ts
t jt|d |d }W d    n1 s0    Y  t|tjsJ t|t jt|d |d }W d    n1 s0    Y  t|tjs~J t|ntd}tj	t
|d |d  W d    n1 s<0    Y  tj	t
|d |d  W d    n1 st0    Y  d S )Nz&Support for multi-dimensional indexingr$   TFzonly integers, slices)rC   Zassert_produces_warningFutureWarningrB   rf   Zndarrayr.   r   r'   r(   r   )r   r    r1   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   )rn   r_   _cache)r   r    r1   r_   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sFJ |ji ksTJ d S r   )rn   Z_viewr   Z_shallow_copyrL   )r   r    r1   Z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        r`   )rc   z
2011-11-01z
2011-12-01)rf   rr   r   rC   Zassert_dict_equalgroupbyr	   r   rZ   NaTrb   r   )r   r    r1   Z
to_groupbyZex_keysrE   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)Zcheck_exactr-   )r~   r   r>   rC   rD   taker   range)r   r    rh   NrF   Zaltr   r   r   test_append_preserves_dtype  s    
z Base.test_append_preserves_dtypec                 C  s   |}|j jdv rT| }t|j |jd}t|| t| }tj|t|dd n|j jdkrfd}nd}t	j
t|d |  W d    n1 s0    Y  t	j
t|d t|  W d    n1 s0    Y  d S )	N)r   ur3   Frp   r   z0ufunc 'invert' not supported for the input typeszbad operandr$   )r>   ru   r
   rb   r4   rC   rD   r   r   r'   r(   r)   )r   r    r1   r   rE   Zres2r*   r   r   r   test_inv
  s    
$zBase.test_inv)2r/   
__module____qualname____doc____annotations__r'   Zfixturer    r"   r+   r2   r6   rG   rP   rS   rW   r\   ri   ro   rt   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markZparametrizer   r   r   r   Zarm_slowr   r   r   r   r   r   r   r   r   r   r   r   (   sj   

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
   rf   rr   r>   rC   re   rL   )r   r>   	index_clsr1   rF   rE   r   r   r   test_constructor_unwraps_index(  s
    z*NumericBase.test_constructor_unwraps_indexc                 C  s   d S rT   r   r   r   r   r   r   0  s    zNumericBase.test_wherec                 C  s"   |}|d }| |du sJ d S )Nr   F)Z$_can_hold_identifiers_and_holds_name)r   r    r1   keyr   r   r   test_can_hold_identifiers4  s    z%NumericBase.test_can_hold_identifiersc                   s<   |}t dd |D   fdd|D }| |ks8J d S )Nc                 s  s   | ]}t t|V  qd S rT   )r~   r[   r   r   r   r   	<genexpr><  r   z*NumericBase.test_format.<locals>.<genexpr>c                   s   g | ]}t | qS r   )r[   ljustr   	max_widthr   r   r   =  r   z+NumericBase.test_format.<locals>.<listcomp>)maxr   r   r   r   r   r   9  s    zNumericBase.test_formatc                 C  s   d S rT   r   r   r   r   r   rP   @  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>   rC   rD   )r   r    rh   rF   rO   rE   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}nLt|d tjgt|dd   }|jr|j	j
dkr~t||j	d}nt|}|d|}tj||dd d S )Nr   r,   r=   r   Tr   )rZ   r   r
   r   r<   r   rf   r   r   r>   ru   r   r   rC   rD   )r   Znulls_fixturer    rh   Zna_valrE   rF   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   rf   r}   r   rC   rD   r   )r   r   r1   ZarrrE   Zfidxrx   rF   r   r   r   $test_arithmetic_explicit_conversionse  s$    

z0NumericBase.test_arithmetic_explicit_conversionsc                 C  sR   |}d| }t jt|d" | jg d|d W d    n1 sD0    Y  d S )Nz:Incorrect `dtype` passed: expected \w+(?: \w+)?, received r$   )r,   r-   r   r=   )r'   r(   r{   r   )r   Zinvalid_dtyper>   r*   r   r   r   test_invalid_dtype  s    
zNumericBase.test_invalid_dtypeN)r/   r   r   r   r   r   r   r   rP   r   r   r   r   r   r   r   r   r   #  s   r   )&
__future__r   r   r   numpyrf   r'   Zpandas._libs.tslibsr   Zpandas.core.dtypes.commonr   r   Zpandas.core.dtypes.dtypesr   ZpandasrZ   r   r	   r
   r   r   r   r   r   r   r   Zpandas._testingZ_testingrC   Zpandas.core.apir   r   r   r   Zpandas.core.arraysr   r   r   r   r   r   r   <module>   s(   0      