o
    i                     @   sj   d Z ddlZddlZddlmZmZmZmZ ddl	m
Z ddlmZmZ dd Zdd ZG d	d
 d
ZdS )z common utilities     N)	DataFrame
MultiIndexSeries
date_range)Float64IndexUInt64Indexc                    s    fddt |D S )Nc                    s   g | ]}  | qS  r   ).0iprefixr   W/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/indexing/common.py
<listcomp>   s    z_mklbl.<locals>.<listcomp>)range)r   nr   r   r   _mklbl   s   r   c                 C   s    t d g| j }|||< t|S N)slicendimtuple)objkeyaxisaxesr   r   r   _axify   s   r   c                   @   sP   e Zd ZdZddhZh dZdd Zddd	Zdd
dZdddZ	dddZ
dS )Basez!indexing comprehensive base classseriesframe>	   tsintsemptymixedmultiuintsfloatslabelsts_revc                 C   s  t tjdtdddd| _ttjddtdddtdddd| _t tjdt	tdddd| _
ttjddt	tdddt	tdddd| _t tjdttdddd| _ttjddttdddttdddd| _td	dgddggtd
dgddggtddgddggg}t tjd|d d| _ttjdd|d |d	 d| _t tjdtdd| _ttjddtdtdd| _t tjdg dd| _ttjddg dd| _t tjdtdddd| _ttjddtdddd| _tdddjdd}t tjd|d| _ttjdd|d| _t | _t t d| _!| j"D ]}i }| j#D ]}t$| | d| ||< qGt%| || q@d S )N   r         )index      )r*   columns            	   
      abcdABCD)r)   r'   nullr(   20130101)periodsF)	ascending)dtype_)&r   nprandomrandarangeseries_intsr   randn
frame_intsr   series_uintsr   frame_uintsr   series_floatsframe_floatsr   from_productseries_multiframe_multilistseries_labelsframe_labelsseries_mixedframe_mixedr   	series_tsframe_tssort_valuesseries_ts_revframe_ts_revframe_emptyobjectseries_empty_kinds_typsgetattrsetattr)selfm_idces	dates_revkinddtypr   r   r   setup_method.   sf    $

zBase.setup_methodFc                 C   s"   |j }|rdd |D }tj| S )zv
        generate the indices
        if values is True , use the axis values
        is False, use the range
        c                 s   s     | ]}t tt|V  qd S r   )rK   r   len)r	   axr   r   r   	<genexpr>x   s    z(Base.generate_indices.<locals>.<genexpr>)r   	itertoolsproduct)r\   fvaluesr   r   r   r   generate_indicesp   s   
zBase.generate_indicesc                 C   s6   |r|j | S |dkr|j| S |dksJ |j| S )z#return the value for the location iiatat)ri   ilocloc)r\   namerh   r
   ri   r   r   r   	get_value|   s   


zBase.get_valuec           
      C   sp   |d u rd S |j }tj| }|D ]%}t||| }|r!|j| }n|}t|D ]}	||	}q't|| qd S r   )	r   rf   rg   rZ   ri   reversed__getitem__tmassert_almost_equal)
r\   rh   funcri   r   indicesr
   resultexpectedar   r   r   check_values   s   
zBase.check_valuesNc                    s    fdd}|d u r| j }|d u rddg}n	|dv sJ |g}| jD ](}t| |}|D ]}	|D ]}
|
| j v s9J ||
 }|	|jk rI||	||d q0q,q#d S )Nc              
      sd   t ||| }zt|| W dS  tttfy1 } z dur,t| r,W Y d}~dS  d}~ww )zcompare equal for these 2 keysN)r   rZ   rr   
IndexError	TypeErrorKeyError
isinstance)r   r   r   axifieddetailfailsmethodr   r   _eq   s   
zBase.check_result.<locals>._eqr   r.   )r   r.   )r   r   r   )rY   rX   rZ   r   )r\   r   r   typsr   r   r   r_   r`   rd   ra   r   r   r   r   check_result   s&   



zBase.check_result)F)NNN)__name__
__module____qualname____doc__rX   rY   rb   rj   rp   rz   r   r   r   r   r   r      s    
B

r   )r   rf   numpyr=   pandasr   r   r   r   pandas._testing_testingrs   pandas.core.apir   r   r   r   r   r   r   r   r   <module>   s    