o
    _~#g%                     @   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   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/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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   L   | | 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#      


zTestScalar.test_iat_set_ints)labelstsfloatsc                 C   sd   | | d| }d}tjt|d tt|d}d|j|< W d    d S 1 s+w   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   r   )Nr   Fr    )r!   r   atlocr#   r$   r%   r   r   r   test_at_set_ints_other6   r,   z!TestScalar.test_at_set_ints_otherN)	__name__
__module____qualname__r2   markparametrizer+   r8   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s/J q"d S )N)r          )g?g?g333333?indexr    )r   itemsr9   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s,J d S )
Nz1/1/2000   periodsrB   )rK      )ABCD)rE   columnsrO      )r   r   nprandomdefault_rngstandard_normalr9   r   )r&   datesdfsresult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&   indexer_ialrG   r*   r\   r   r   r   test_iloc_iat_coercion_datelikeY   s   z,TestAtAndiAT.test_iloc_iat_coercion_datelikec                 C   s2  t tdg ddd}|jd }|dksJ |jd }|dks!J d}tjt|d |jd  W d    n1 s:w   Y  d	}tjt|d |jd
  W d    n1 sXw   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sJ d S )NrT   )r    r    rB   rB   rC   int64)rE   r`   rB   z0index 10 is out of bounds for axis 0 with size 5r0   
   z1index -10 is out of bounds for axis 0 with size 5irC   r_   r   rE   name)rB   r   )
r   r
   ilocr"   r2   r3   
IndexErrorr#   assert_series_equalto_frame)r&   r[   r\   r6   r*   rZ   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 )NrB      rC   rO   rS   r   rO   r   )rO   r   )r    rO   g       @r    re   )rU   rV   rW   rX   reshaper   r9   rg   copyr#   ri   Tr   )r&   arrrZ   r\   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s4J |jd }||ks?J d S )NJohnAndersoni  rC          8   rB         rd   )rf   dater{   zAsia/Shanghaiz2017-03-13 13:32:56+0800)tz)r   r{   )r   r   dttz_localizer:   r9   )r&   rZ   r*   r\   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r#|ks&J  J qtt|D ]}|j| |j|   krB|d ksEJ  J q-tj	t
dd |jd  W d    n1 s]w   Y  tj	t
dd |jd  W d    d S 1 szw   Y  d S )N)r    rB   rC   rN   rT   abcr    rB   rD   r    z^4$r0   rN   )r   rF   r9   r:   r
   r   r"   rg   r2   r3   KeyError)r&   r[   rH   rI   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 g dg dgg dd}| D ]%\}}| D ]\}}|j||f |j||f   kr3|ks6J  J qqtdD ]%}tdD ]}|j||f |j||f   kr]|d | ks`J  J qBq<tj	t
dd |jd	  W d    n1 syw   Y  tj	t
dd |jd	  W d    d S 1 sw   Y  d S )
N)r   r    rB   rC   rN   )rT   rl      rK   	   r   rm   rB   rT   z^3$r0   )r   rC   )r   iterrowsrF   r9   r:   r
   r"   rg   r2   r3   r   )r&   rZ   rowIdxrowrH   rI   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      ?rN   rT   )r   r   r   r   r    )r   r"   r#   assert_frame_equal)r&   r\   r*   r   r   r   'test_iat_setter_incompatible_assignment   s   
z4TestAtAndiAT.test_iat_setter_incompatible_assignmentN)r<   r=   r>   rJ   r^   r2   r?   r@   r   r   r   rb   rk   rs   r   r   r   r   r   r   r   r   rA   A   s(    
rA   c                  C   s  t ddd} | |  }t|  td}t| td}t||d}|jtk s*J |jd |j	d |j
d |jd fD ]}||d u sFJ t|tsMJ t|trTJ q<|jd	 |j	d
 |j
d	 |jd
 fD ]}||d u sqJ t|tsxJ t|trJ qgd S )Nz
2016-01-01rC   rL   r_   )rO   rP   rn   r   r   )r    rP   )r    r    r    )r   r   to_pydatetimeobjectto_pytimedeltar   dtypesallr9   r"   r:   rg   
isinstancer   r   r   r   )dtitdirG   ser2rZ   r\   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s)J |jd dks2J d S )Nr   r    rB   r    rB   rC   rN   rD   r   r   r   rE   nlevelsr9   rZ   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s"J | d }|jjdks.J d|jd< |jd dks<J d S )	Nr   r    rB   r   r   rD   r   rC   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sJ |jd dks!J |jd dks*J |d }|jjdks6J |jd dks?J |jd dksHJ d S )	Nr   r    rB   rC   rN   rD   r    rC   r   r   r   rE   r   r9   r:   r&   rZ   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sJ d|jd< |jd dks&J d|jd< |jd dks4J |d }|jjdks@J d|jd	< |jd	 dksNJ d
|jd	< |jd	 d
ks\J d S )Nr   r    rB   rC   rN   rD   r   rT   r   rl   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    FTrD   r   )r   r9   )r&   s2r\   r   r   r    test_multiindex_at_get_one_level+  s   
z5TestMultiIndexScalar.test_multiindex_at_get_one_levelN)	r<   r=   r>   r   r2   r?   filterwarningsr   r   r   r   r   r   r   	  s
    

r   )F)__doc__r   r   r   numpyrU   r2   pandasr   r   r   r   r   pandas._testing_testingr#   r   r   rA   r   r   r?   r   r   r   r   r   r   r   <module>   s     
 

