a
    Pf%                     @   s   d Z ddlmZmZ ddlZddlZddlZddlmZm	Z	m
Z
mZmZ ddlmZ dddZG dd	 d	ZG d
d dZdd Zdd Zejddd ZG dd dZdS )z, test scalar indexing, including at and iat     )datetime	timedeltaN)	DataFrameSeries	Timedelta	Timestamp
date_rangeFc                 C   s"   | j }|rdd |D }tj| S )zf
    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 )N)listrangelen).0ax r   Z/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/indexing/test_scalar.py	<genexpr>       z#generate_indices.<locals>.<genexpr>)axes	itertoolsproduct)fvaluesr   r   r   r   generate_indices   s    r   c                   @   s   e Zd Zejdddgejdddgdd Zejdddgejdg d	d
d Zejdddgejdg ddd ZdS )
TestScalarkindseriesframecolintsuintsc                 C   sL   | | d| }t|d}|D ]$}d|j|< |j| }t|d q"d S )N_T   )getfixturevaluer   iatr   tmassert_almost_equalselfr   r   requestr   indicesiexpectedr   r   r   test_iat_set_ints#   s    


zTestScalar.test_iat_set_ints)labelstsfloatsc                 C   sb   | | d| }d}tjt|d( tt|d}d|j|< W d    n1 sT0    Y  d S )Nr   z1iAt based indexing can only have integer indexersmatchFr    )r!   pytestraises
ValueErrornextr   r"   )r&   r   r   r'   r   msgidxr   r   r   test_iat_set_other-   s
    zTestScalar.test_iat_set_other)r   r   r,   r-   r.   c                 C   sL   | | d| }t|d}|D ]$}d|j|< |j| }t|d q"d S )Nr   Fr    )r!   r   atlocr#   r$   r%   r   r   r   test_at_set_ints_other6   s    


z!TestScalar.test_at_set_ints_otherN)	__name__
__module____qualname__r1   markparametrizer+   r7   r:   r   r   r   r   r   "   s   r   c                   @   s   e Zd Zdd Zdd Zejdeddgdd	e	dged
dgdd	e
dggdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )TestAtAndiATc                 C   sd   t g dg dd}| D ]\}}|j| |ksJ qtt|D ]}|j| |d ksDJ qDd S )N)r          )g?g?g333333?indexr    )r   itemsr8   r
   r   r"   )r&   serelitemr)   r   r   r   test_float_index_at_iatD   s
    z$TestAtAndiAT.test_float_index_at_iatc                 C   s\   t ddd}ttjdd|g dd}|d }|j|d	  }|jd	 }||ksXJ d S )
Nz1/1/2000   ZperiodsrA   )rJ      )ABCD)rD   columnsrM      )r   r   nprandomdefault_rngstandard_normalr8   r   )r&   datesdfsresultZxpr   r   r   test_at_iat_coercionK   s    
z!TestAtAndiAT.test_at_iat_coercionzser, expectedz
2014-01-01z
2014-02-02zdatetime64[ns]dtypez1 daysz2 daysztimedelta64[ns]c                 C   s   ||d }||ksJ d S )Nr    r   )r&   Zindexer_ialrF   r*   rZ   r   r   r   test_iloc_iat_coercion_datelikeY   s    z,TestAtAndiAT.test_iloc_iat_coercion_datelikec                 C   s4  t tdg ddd}|jd }|dks,J |jd }|dksBJ d}tjt|d |jd  W d    n1 st0    Y  d	}tjt|d |jd
  W d    n1 s0    Y  |jddg }t ddgddgdd}t|| |	 }|jd }t ddgdd}t|| |jd }|dks0J d S )NrR   )r    r    rA   rA   rB   Zint64)rD   r]   rA   z0index 10 is out of bounds for axis 0 with size 5r/   
   z1index -10 is out of bounds for axis 0 with size 5irB   r\   r   rD   name)rA   r   )
r   r
   ilocr"   r1   r2   
IndexErrorr#   assert_series_equalZto_frame)r&   rY   rZ   r5   r*   rX   r   r   r   test_imethods_with_dupsl   s(    

((

z$TestAtAndiAT.test_imethods_with_dupsc                 C   s   t jdddd}t|ddgd}|jd }|jd  }t	
|| |jjd }t	
|| d|jd	< td
d
gddgdd}t	
|jd | d S )NrA      rB   rM   rQ   r   rM   r   )rM   r   )r    rM   g       @r    r`   )rS   rT   rU   rV   Zreshaper   r8   rb   copyr#   rd   Tr   )r&   ZarrrX   rZ   r*   r   r   r   !test_frame_at_with_duplicate_axes   s    

z.TestAtAndiAT.test_frame_at_with_duplicate_axesc              
   C   s   t ddgtddddddtddd	d
ddgd}|d jd|d< tddd}|jd }||kshJ |jd }||ks~J d S )NZJohnZAndersoni  rB          8   rA         r_   )ra   daterq   zAsia/Shanghaiz2017-03-13 13:32:56+0800)tz)r   rq   )r   r   dtZtz_localizer9   r8   )r&   rX   r*   rZ   r   r   r   test_at_getitem_dt64tz_values   s    	

z*TestAtAndiAT.test_at_getitem_dt64tz_valuesc                 C   s   t g dg dd}| D ].\}}|j| |j|   krD|ksn J qtt|D ].}|j| |j|   kr|d ksXn J qXtj	t
dd |jd  W d    n1 s0    Y  tj	t
dd |jd  W d    n1 s0    Y  d S )N)r    rA   rB   rL   rR   abcr    rA   rC   r    z^4$r/   rL   )r   rE   r8   r9   r
   r   r"   rb   r1   r2   KeyError)r&   rY   rG   rH   r)   r   r   r   'test_mixed_index_at_iat_loc_iloc_series   s    (,(z4TestAtAndiAT.test_mixed_index_at_iat_loc_iloc_seriesc                 C   s6  t g dg dgg dd}| D ]H\}}| D ]6\}}|j||f |j||f   krd|ks4n J q4q$tdD ]H}tdD ]:}|j||f |j||f   kr|d | ksn J qqvtj	t
dd |jd	  W d    n1 s0    Y  tj	t
dd |jd	  W d    n1 s(0    Y  d S )
N)r   r    rA   rB   rL   )rR   rf      rJ   	   ru   rg   rA   rR   z^3$r/   )r   rB   )r   ZiterrowsrE   r8   r9   r
   r"   rb   r1   r2   ry   )r&   rX   ZrowIdxrowrG   rH   r)   r   r   r   *test_mixed_index_at_iat_loc_iloc_dataframe   s    2:(z7TestAtAndiAT.test_mixed_index_at_iat_loc_iloc_dataframec                 C   sF   t ddgddgd}d |jd< t d dgddgd}t|| d S )Ng        g      ?rL   rR   )rv   rw   r   r   r    )r   r"   r#   Zassert_frame_equal)r&   rZ   r*   r   r   r   'test_iat_setter_incompatible_assignment   s    
z4TestAtAndiAT.test_iat_setter_incompatible_assignmentN)r;   r<   r=   rI   r[   r1   r>   r?   r   r   r   r^   re   rk   rt   rz   r~   r   r   r   r   r   r@   A   s&   
r@   c                  C   s  t ddd} | |  }t|  td}t| td}t||d}|jtk sTJ |jd |j	d |j
d |jd fD ]0}||d u sJ t|tsJ t|trxJ qx|jd	 |j	d
 |j
d	 |jd
 fD ]0}||d u sJ t|tsJ t|trJ qd S )Nz
2016-01-01rB   rK   r\   )rM   rN   rh   r   r   )r    rN   )r    r    r    )r   r   Zto_pydatetimeobjectZto_pytimedeltar   Zdtypesallr8   r"   r9   rb   
isinstancer   r   r   r   )ZdtiZtdirF   Zser2rX   rZ   r   r   r   &test_iat_dont_wrap_object_datetimelike   s    ((r   c                  C   sh   t dddgiddgd} | jjdks(J | jd dks:J | d }|jjdksRJ |jd dksdJ d S )Nrv   r    rA   r    rA   rB   rL   rC   r   rv   r   rD   nlevelsr8   rX   r   r   r   r   test_at_with_tuple_index_get   s    r   .ignore:Setting a value on a view:FutureWarningc                  C   s|   t dddgiddgd} | jjdks(J d| jd< | jd dksDJ | d }|jjdks\J d|jd< |jd dksxJ d S )	Nrv   r    rA   r   r   rC   r   rB   r   r   r   r   r   test_at_with_tuple_index_set   s    

r   c                   @   s0   e Zd Zdd Zejddd Zdd ZdS )	TestMultiIndexScalarc                 C   s   t dddgiddgddggd}|jjdks0J |jd dksBJ |jd dksTJ |d }|jjdkslJ |jd dks~J |jd dksJ d S )	Nrv   r    rA   rB   rL   rC   r    rB   rv   r   r   rD   r   r8   r9   r&   rX   r   r   r   r   test_multiindex_at_get
  s     z+TestMultiIndexScalar.test_multiindex_at_getr   c                 C   s   t dddgiddgddggd}|jjdks0J d|jd< |jd dksLJ d|jd< |jd dkshJ |d }|jjdksJ d|jd	< |jd	 dksJ d
|jd	< |jd	 d
ksJ d S )Nrv   r    rA   rB   rL   rC   r   rR   r   rf   r   r   r   r   r   test_multiindex_at_set  s     



z+TestMultiIndexScalar.test_multiindex_at_setc                 C   s,   t dddggd}|jd }|dks(J d S )N)r   r    FTrC   r   )r   r8   )r&   s2rZ   r   r   r    test_multiindex_at_get_one_level+  s    
z5TestMultiIndexScalar.test_multiindex_at_get_one_levelN)	r;   r<   r=   r   r1   r>   filterwarningsr   r   r   r   r   r   r   	  s   

r   )F)__doc__r   r   r   numpyrS   r1   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr#   r   r   r@   r   r   r>   r   r   r   r   r   r   r   <module>   s   
 

