U
    _{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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).0Zax r   `/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/pandas/tests/indexing/test_scalar.py	<genexpr>   s     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d	d
dgdd Zejdddgejdddd	d
dgdd ZdS )
TestScalarkindseriesframecolZintsZ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tsZfloatsc              	   C   sN   | | d| }d}tjt|d tt|d}d|j|< W 5 Q R X 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_otherc                 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__r,   markparametrizer'   r2   r5   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   sh   t dddgdddgd}| D ]\}}|j| |ks tq tt|D ]}|j| |d ksHtqHd S )Nr         g?g?g333333?index)r   itemsr3   AssertionErrorr
   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|ddddgd	}|d }|j|d
  }|jd
 }||ksXtd S )Nz1/1/2000   Zperiods   ABCD)r?   columns   )r   r   nprandomrandnr3   r   rA   )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t d S )Nr   )rA   )r"   Zindexer_ialrB   r&   rU   r   r   r   test_iloc_iat_coercion_datelikeU   s    z,TestAtAndiAT.test_iloc_iat_coercion_datelikec              	   C   s  t tddddddgdd}|jd }|dks2t|jd }|dksHtd}tjt|d |jd	  W 5 Q R X d
}tjt|d |jd  W 5 Q R X |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std S )NrN   r   r<   r=   Zint64)r?   rX   z0index 10 is out of bounds for axis 0 with size 5r*   
   z1index -10 is out of bounds for axis 0 with size 5irW   r   r?   name)r<   r   )r   r
   ilocrA   r   r,   r-   
IndexErrorr   assert_series_equalZto_frame)r"   rT   rU   r0   r&   rS   r   r   r   test_imethods_with_dupsh   s(    



z$TestAtAndiAT.test_imethods_with_dupsc                 C   s   t j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 )N   r=   r<   rI   rM   r   rI   r   )rI   r   )r   rI   g       @r   r[   )rO   rP   rQ   Zreshaper   r3   r]   r   r_   Tr   )r"   ZarrrS   rU   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sht|jd }||ks~td S )NZJohnZAndersoni  r=          8   r<         rZ   )r\   daterk   zAsia/Shanghaiz2017-03-13 13:32:56+0800)tz)r   rk   )r   r   dtZtz_localizer4   rA   r3   )r"   rS   r&   rU   r   r   r   test_at_getitem_dt64tz_values   s    	

z*TestAtAndiAT.test_at_getitem_dt64tz_valuesc              	   C   s   t dddddgdddddgd	}| D ].\}}|j| |j|   krP|ks(n tq(tt|D ].}|j| |j|   kr|d ksdn tqdt	j
td
d |jd  W 5 Q R X t	j
td
d |jd  W 5 Q R X d S )Nr   r<   r=   rH   rN   abcr>   z^4$r*   )r   r@   r3   r4   rA   r
   r   r   r]   r,   r-   KeyError)r"   rT   rC   rD   r%   r   r   r   'test_mixed_index_at_iat_loc_iloc_series   s     (,z4TestAtAndiAT.test_mixed_index_at_iat_loc_iloc_seriesc              	   C   s  t dddddgdddd	d
ggdddddgd}| D ]H\}}| D ]6\}}|j||f |j||f   krv|ksFn tqFq6tdD ]H}tdD ]:}|j||f |j||f   kr|d | ksn tqqt	j
tdd |jd  W 5 Q R X t	j
tdd |jd  W 5 Q R X d S )Nr   r   r<   r=   rH   rN   ra      rF   	   ro   rp   rq   rb   z^3$r*   )r   r=   )r   Ziterrowsr@   r3   r4   rA   r
   r   r]   r,   r-   rr   )r"   rS   ZrowIdxrowrC   rD   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 )Nr   r   rH   rN   )ro   rp   r   r   )r   r   r   Zassert_frame_equal)r"   rU   r&   r   r   r   'test_iat_setter_incompatible_assignment   s    
z4TestAtAndiAT.test_iat_setter_incompatible_assignmentN)r6   r7   r8   rE   rV   r,   r9   r:   r   r   r   rY   r`   re   rn   rs   rw   ry   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 sTt|j	d |j
d |jd |jd fD ]0}||d kstt|tstt|trxtqx|j	d	 |j
d
 |jd	 |jd
 fD ]0}||d kstt|tstt|trtqd S )Nz
2016-01-01r=   rG   rW   )rI   rJ   rc   rx   r   )r   rJ   )r   r   r   )r   r   Zto_pydatetimeobjectZto_pytimedeltar   ZdtypesallrA   r3   r   r4   r]   
isinstancer   r   r   r   )ZdtiZtdirB   Zser2rS   rU   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(t| jd dks:t| d }|jjdksRt|jd dksdtd S )Nro   r   r<   r   r<   r=   rH   r>   r~   ro   r   r?   nlevelsrA   r3   rS   r   r   r   r   test_at_with_tuple_index_get   s    r   c                  C   s|   t dddgiddgd} | jjdks(td| jd< | jd dksDt| d }|jjdks\td|jd< |jd dksxtd S )	Nro   r   r<   r~   r   r>   r   r=   r   r   r   r   r   test_at_with_tuple_index_set   s    

r   c                   @   s$   e Zd Zdd Z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s0t|jd dksBt|jd dksTt|d }|jjdkslt|jd dks~t|jd dkstd S )	Nro   r   r<   r=   rH   r>   r   r=   ro   r   r   r?   r   rA   r3   r4   r"   rS   r   r   r   r   test_multiindex_at_get  s     z+TestMultiIndexScalar.test_multiindex_at_getc                 C   s   t dddgiddgddggd}|jjdks0td|jd< |jd dksLtd|jd< |jd dksht|d }|jjdkstd|jd	< |jd	 dkstd
|jd	< |jd	 d
kstd S )Nro   r   r<   r=   rH   r>   r   rN   r   ra   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(td S )N)r   r   FTr>   r   )r   r3   rA   )r"   s2rU   r   r   r    test_multiindex_at_get_one_level%  s    
z5TestMultiIndexScalar.test_multiindex_at_get_one_levelN)r6   r7   r8   r   r   r   r   r   r   r   r     s   r   )F)__doc__r   r   r   numpyrO   r,   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr   r   r   r;   r}   r   r   r   r   r   r   r   <module>   s   
 