o
    _~#gb                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZ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 G dd dZG dd dZG dd	 d	ZG d
d dZG dd dZG dd dZG dd dZ G dd dZ!dS )    N)InvalidIndexError)NACategoricalIndexDatetimeIndexIndexIntervalIntervalIndex
MultiIndexNaT	Timedelta	Timestamparray
date_rangeinterval_rangeisnaperiod_rangetimedelta_rangec                   @   s   e Zd Zdd Zdd ZdS )TestGetItemc                 C   s   t jddtjfddtjf|d}|d tdd|dksJ |d tdd|dks*J t|d s2J |dd }t jdd	|d}t|| |dd }t jd
d|d}t|| |dd }t jdtjfdtjf|d}t|| d S )Nr         closed              ?       @)r   )r   )r   r   r   r      )r   from_arraysnpnanr   r   tmassert_index_equal)selfr   idxresultexpected r&   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/indexes/interval/test_indexing.pytest_getitem   s    zTestGetItem.test_getitemc                 C   s   t jtddd}tjtdd |d d d f  W d    n1 s#w   Y  tjtdd |d  W d    n1 s>w   Y  tjtdd |d  W d    d S 1 sZw   Y  d S )N   rightr   z&multi-dimensional indexing not allowedmatchTF)r   from_breaksrangepytestraises
ValueError)r"   r#   r&   r&   r'   test_getitem_2d_deprecated2   s   

"z&TestGetItem.test_getitem_2d_deprecatedN)__name__
__module____qualname__r(   r2   r&   r&   r&   r'   r      s    r   c                   @      e Zd Zdd ZdS )	TestWherec                 C   s   |}t jtddd}dgt| }|}|||}t|| dgdgt|dd    }t tjg|dd  	  }|||}t|| d S )Nr)   r*   r   TFr   )
r   r-   r.   lenwherer    r!   r   r   tolist)r"   listlike_boxklassr#   condr%   r$   r&   r&   r'   
test_where@   s   zTestWhere.test_whereN)r3   r4   r5   r>   r&   r&   r&   r'   r7   ?       r7   c                   @   r6   )TestTakec                 C   sb   t jtd|d}|td}t|| |g d}t jg dg d|d}t|| d S )Nr)   r   
   )r   r   r   )r   r   r   )r   r-   r.   taker    r!   r   )r"   r   indexr$   r%   r&   r&   r'   	test_takeP   s   zTestTake.test_takeN)r3   r4   r5   rD   r&   r&   r&   r'   r@   O   r?   r@   c                   @   s  e Zd Zejdg ddd Zejdg ddd Zejdg d	d
d Zejdg dejdg ddd Z	ejjde
ddde
ddddedddgdd ddd Zejjde
ddde
dddfe
dddde
ddddfeddded ddfgd!d dd"d# Zejjd$e
d%dd&d'e
d%dd&dd(ed)dd&d'ed*d+d+ed,d-d-gd.d dd/d0 Zejd1d2gd3gd4d5 Zd6d7 Zd8S )9
TestGetLocsider*   leftbothneitherc              
   C   sR  t jddg|d}ddgddgddgddgddgd	dgd
dgfD ]}td|d  d|d  d| d}||kr|ddgkrN|tdd|ddksMJ q |ddgkrc|tdd|ddksbJ q tjt|d |t|d|i W d    n1 sw   Y  q tjt|d |t|d|i W d    n1 sw   Y  q d S )Nr   r   r   r   r   r   r   r   r            @	Interval(, 
, closed='')r+   r   )	r   from_tuplesreescapeget_locr   r/   r0   KeyError)r"   r   rF   r#   boundmsgr&   r&   r'   test_get_loc_interval\   s"   2&z TestGetLoc.test_get_loc_intervalscalar)	      r         ?r         ?r   rN   r         @c              	   C   s   ddddddddddddddddddddd}t jdd	g|d
}|||  v r;|||| | ks9J d S tjtt|d || W d    d S 1 sUw   Y  d S )Nr   r   )r^   r   rN   r   )r   r^   r   rN   )r   r^   r   r   rN   r   )r^   rN   rG   rK   rL   r   r+   )r   rT   keysrW   r/   r0   rX   str)r"   r   r\   correctr#   r&   r&   r'   test_get_loc_scalarp   s   "zTestGetLoc.test_get_loc_scalar)rO   r   r^   r         @      c                 C   sx   t jdg|d}||d v r||}|dksJ d S tjtt|d || W d    d S 1 s5w   Y  d S )Nr   rf   r   r   r+   )r   rT   rW   r/   r0   rX   rb   )r"   r\   r   rC   r$   r&   r&   r'   test_get_loc_length_one_scalar   s   
"z)TestGetLoc.test_get_loc_length_one_scalarother_closed)rH   r*   rI   rJ   zleft, right)rh   )rO   rM   )rO   rg   rg      c                 C   s   t jdg|d}t|||d}||d kr"||}|dks J d S tjttd| d| d| dd || W d    d S 1 sGw   Y  d S )	Nrh   r   r   rP   rQ   rR   rS   r+   )	r   rT   r   rW   r/   r0   rX   rU   rV   )r"   rH   r*   r   rj   rC   intervalr$   r&   r&   r'    test_get_loc_length_one_interval   s   
"z+TestGetLoc.test_get_loc_length_one_intervalbreaks20180101rM   periodsz
US/Easternrr   tzz0 daysc                 C   
   t | jS Nrb   dtypexr&   r&   r'   <lambda>      
 zTestGetLoc.<lambda>)idsc                 C   sb   t |}|d j}||}d}||ksJ t|d j|d j}||}d}||ks/J d S Nr   )r   r-   midrW   r   rH   r*   )r"   ro   rC   valuer$   r%   rm   r&   r&   r'   (test_get_loc_datetimelike_nonoverlapping   s   



z3TestGetLoc.test_get_loc_datetimelike_nonoverlappingarrays20180103z2 daysc                 C   s   t | d jS r~   rw   ry   r&   r&   r'   r{      s    c                 C   sr   t j| }|d jtd }||}tddd }||ksJ t|d j|d j}||}d}||ks7J d S )Nr   z12 hoursr   )	r   r   r   r   rW   slicer   rH   r*   )r"   r   rC   r   r$   r%   rm   r&   r&   r'   %test_get_loc_datetimelike_overlapping   s   


z0TestGetLoc.test_get_loc_datetimelike_overlappingvaluesz
2018-01-04z-1D)rr   freq)rr   r   rt   z3 days      @g      r   rO   c                 C   ru   rv   rw   ry   r&   r&   r'   r{      r|   c                 C   s>   t |dd  |d d }||d }d}||ksJ d S )Nr   rO   r   )r   r   rW   )r"   r   rC   r$   r%   r&   r&   r'   test_get_loc_decreasing   s   z"TestGetLoc.test_get_loc_decreasingkeyrf   rL   c                 C   sT   t g d}t|}tjt|d || W d    d S 1 s#w   Y  d S )N)r   r   r   rM   )r   rf   )rl   rA   )r   rA   r+   )r   rT   rb   r/   r0   r   rW   )r"   r   r#   rZ   r&   r&   r'   test_get_loc_non_scalar_errors   s
   "z)TestGetLoc.test_get_loc_non_scalar_errorsc              	   C   s   t tjtddtjg}tg d}d tjtfD ]}||v s!J ||}t|| qt	t
ddtddfD ] }tjtt|d || W d    n1 sUw   Y  q:d S )Nr   r   )TFTr
   nsr+   )r   r   r   r   r   r   rW   r    assert_numpy_array_equalr
   timedelta64
datetime64r/   r0   rX   rb   )r"   rC   r%   r   r$   r&   r&   r'   test_get_indexer_with_nans   s   
z%TestGetLoc.test_get_indexer_with_nansN)r3   r4   r5   r/   markparametrizer[   rd   ri   rn   r   r   r   r   r   aranger   r   r   r&   r&   r&   r'   rE   [   s\    






	




rE   c                   @   s*  e Zd Zejdeddddgdgfeddddgdgfeddd	dgdgfeddd
dgdgfeddddgdgfeddddgdgfeddddgdgfeddddeddddgddgfeddddeddddgddgfeddddeddddgddgfeddddeddddgddgfgdd Zejddgdgfdgdgfdgdgfdgdgfdgdgfdgdgfdgdgfdgdgfdgdgfdgdgfdgdgfddgddgfg dg dfg dg dfg dg dfgdd Zejddge	
dddgd d! Zejd"ddgd#d$ Zejd%eg d&ed'd(d)e	jgejg d*d	ddddddde	jgg d+gd,d- Zd.d/ Zd0d1 Zejd2g d3d
fg d4dfg d5dfg d6d	fgd7d8 Zejddgdgdgffdgdgg ffdgdgg ffdgddgg ffdgddgg ffdgg d9g ffdgddgg ffdgdgg ffdgdgg ffdgdgdgffdgdgdgffddgg d:g ffg dg d;g ffg dg d<dgffg dg d=dgffgd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZejdHeeegdIdJ ZdKdL ZdMS )NTestGetIndexerzquery, expectedr   rM   r*   r   r   rH   rO   rI   rJ   r   r^   r_   rf   rl   c                 C   >   g d}t j|dd}||}tj|dd}t|| d S )N)r   r   r   )rf   rl   r*   r   intprx   r   rT   get_indexerr   r   r    r   r"   queryr%   tuplesrC   r$   r&   r&   r'   test_get_indexer_with_interval  s
   
z-TestGetIndexer.test_get_indexer_with_intervalr]   rN   r   r`   re   r   r   r   )r   r   rO   )r   r   r   rM   )r   r   rO   r   )r   r   r   rM   r   )r   r   rO   r   r   c                 C   r   )NrK   r   r   r   rM   r*   r   r   r   r   r   r&   r&   r'   #test_get_indexer_with_int_and_float  s
   
z2TestGetIndexer.test_get_indexer_with_int_and_floatitemc                 C   sB   t jdg|d}||}tjdgt| dd}t|| d S )Nrh   r   r   r   r   )r   rT   r   r   r   r8   r    r   )r"   r   r   rC   r$   r%   r&   r&   r'   test_get_indexer_length_one5  s   
z*TestGetIndexer.test_get_indexer_length_onesizec                 C   sL   t jdg|d}|tdd|g| }tjdg| dd}t|| d S )Nrh   r   r   rf   r   r   )r   rT   r   r   r   r   r    r   )r"   r   r   rC   r$   r%   r&   r&   r'   $test_get_indexer_length_one_interval=  s   z3TestGetIndexer.test_get_indexer_length_one_intervaltarget))rl      r   r   rK   rK   r   r   r   )foor   barbazc                 C   s>   t g d}t||d}||}||}t|| d S )Nr   )ordered)r   rT   r   r   r    r   )r"   r   r   rC   categorical_targetr$   r%   r&   r&   r'   test_get_indexer_categoricalE  s
   

z+TestGetIndexer.test_get_indexer_categoricalc                 C   s   t td}|t tjg}t|}||}tjdtj	d}t
|| |dd  |d d d }tjg dtj	d}t
|| |||}tjg dtj	d}t
|| d S )Nrf   r   r   rO   )r   r   r   r   rO   )
r   r   r   r   rM   r   r   r   r   rM   )r   r-   r.   appendr   r   r   r   r   r   r    r   r   )r"   iiii2ci2r$   r%   r&   r&   r'   &test_get_indexer_categorical_with_nansX  s   
z5TestGetIndexer.test_get_indexer_categorical_with_nansc                 C   s   t tddd}tdgdd}||}tjdgtjd}t	|| ||
t}t	|| ||j}tjdgtjd}t	|| d S )	Nz
2018-01-01rM   rq   z
2018-01-02zM8[ns]r   r   rO   )r   r-   r   r   r   r   r   r   r    r   astyperb   asi8)r"   r   r   r$   r%   r&   r&   r'   test_get_indexer_datetimel  s   
z(TestGetIndexer.test_get_indexer_datetimeztuples, closed)r   r   r   )rh   )r   rM   rk   )rK   rK   r   )rK   rL   r   c                 C   sT   t j||d}d}tjt|d |ddg W d    d S 1 s#w   Y  d S )Nr   zKcannot handle overlapping indices; use IntervalIndex.get_indexer_non_uniquer+   r   r   )r   rT   r/   r0   r   r   )r"   r   r   rC   rZ   r&   r&   r'   test_get_indexer_errors}  s   "z&TestGetIndexer.test_get_indexer_errors)r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   rO   )
r   r   r   r   r   r   rO   r   r   r   c           	      C   sd   g d}t j|dd}||\}}tj|d dd}tj|d dd}t|| t|| d S )N))r   rN   r   r   rH   r   r   r   r   r   )r   rT   get_indexer_non_uniquer   r   r    r   )	r"   r   r%   r   rC   result_indexerresult_missingexpected_indexerexpected_missingr&   r&   r'   .test_get_indexer_non_unique_with_int_and_float  s   z=TestGetIndexer.test_get_indexer_non_unique_with_int_and_floatc                 C   s|   t g d}t g d}||}tjg dtjd}t|| ||dd  }tjddgtjd}t|| d S )N)rL   )rM   rf   rK   )rK   rL   rk   )r   	   )r   r   rO   rO   r   r   r   )r   rT   r   r   r   r   r    r   )r"   idx1idx2r$   r%   r&   r&   r'   test_get_indexer_non_monotonic  s   
z-TestGetIndexer.test_get_indexer_non_monotonicc                 C   sT   t tjtjg}t tjg}|jrJ ||}tjddgtjd}t|| d S )Nr   r   r   )	r   r   r   _index_as_uniqueget_indexer_forr   r   r    r   )r"   rC   otherr$   r%   r&   r&   r'   r     s   

z)TestGetIndexer.test_get_indexer_with_nansc                 C   sH   t g d}|tddg\}}tjddgtjd}t|| d S )N)r   r   r   r   r   r   r   r   r   r   )	r   rT   r   r   r   r   r   r    r   )r"   rC   r$   _r%   r&   r&   r'   'test_get_index_non_unique_non_monotonic  s   z6TestGetIndexer.test_get_index_non_unique_non_monotonicc                 C   sl   t jg ddd}tg ddd}t||g}|dtddg}tj	g dtj
d	}t|| d S )
N))r   r   r   r   rm   )namer   r   r   r   )r   rM   rl   r   )r   rT   r   r	   from_productget_level_valuesr   r   r   r   r   r    r   )r"   interval_index	foo_indexmulti_indexr$   r%   r&   r&   r'   *test_get_indexer_multiindex_with_intervals  s   

z9TestGetIndexer.test_get_indexer_multiindex_with_intervalsboxc                 C   sR   t dddd}|ttdddd}||}tjg dtjd}t|| d S )Nz
2022-07-01Dr   )r   rr   3D)rO   rO   rO   r   )	r   r   r   r   r   r   r   r    r   )r"   r   rngr#   actualr%   r&   r&   r'   test_get_indexer_interval_index  s
   
z.TestGetIndexer.test_get_indexer_interval_indexc                 C   sl   t ddd}tddg}d|j_||}tddg}tj||dd ||d }tj||dd d S )Nr   rf   startendr   r   F)check_dtype)	r   r   r   flags	writeabler   r    r   r   )r"   r#   arrr$   r%   r&   r&   r'   test_get_indexer_read_only  s   
z)TestGetIndexer.test_get_indexer_read_onlyN)r3   r4   r5   r/   r   r   r   r   r   r   r   r   r   r   rT   r   r   r   r   r   r   r   r   r   r   r   listr   r   r&   r&   r&   r'   r      s    """"
















	




	


	r   c                
   @   sv   e Zd Zdd Zdd Zejdddgddgdd	gdd
ggejdg dg dg dg dg dgdd ZdS )TestSliceLocsc                 C   s  t g d}|jtddtddddksJ |jtddddks%J |jtddddks2J |jtdddd	ks?J |jtddtdddd
ksPJ t g d}|jtddtdddd
kshJ |jtddddksuJ |jtdddd	ksJ |jtddddksJ |jtddtddddksJ t g d}|jtddtddddksJ |jtddddksJ |jtddddksJ |jtddddksJ |jtddtddddksJ t g d}tjttdd |jtddtddd W d    n	1 sw   Y  tjttdd |jtddd W d    n	1 s>w   Y  |jtddddksQJ tjttdd |jtddd W d    n	1 spw   Y  tjttdd |jtddtddd W d    n	1 sw   Y  t g d}|jtddtddddksJ |jtddddksJ |jtddddksJ |jtddddksJ |jtddtddddksJ d S )Nr   r   r   r   r   rM   r   r   r   )r   )r   rK   r   r   r   r   r   rL   r   r   r   r   )r   r   r   r   r   zR"Cannot get left slice bound for non-unique label: Interval(0, 2, closed='right')"r+   zS"Cannot get right slice bound for non-unique label: Interval(0, 2, closed='right')"r   r   r   r   )r   rM   )	r   rT   
slice_locsr   r/   r0   rX   rU   rV   r"   rC   r&   r&   r'   test_slice_locs_with_interval  st   """"""			
$(z+TestSliceLocs.test_slice_locs_with_intervalc                 C   s  t g d}|dddksJ |dddksJ |dddks%J |dddks/J |dd	d
ks9J |dd	dksCJ t g d}|dddksTJ |dddks^J |dddkshJ |dddksrJ |dd	dks|J |dd	dksJ d S )Nr   r   r   rK   r   r   r   r   rM   rL   r   )r   r   rK   )r   r   )r   r   )r   r   r   )r   r   )r   rT   r   r   r&   r&   r'   -test_slice_locs_with_ints_and_floats_succeedsH  s   z;TestSliceLocs.test_slice_locs_with_ints_and_floats_succeedsr   r   r   r   r   rM   r   r   r   r   r   r   c                 C   sR   |\}}t |}tjtdd ||| W d    d S 1 s"w   Y  d S )Nzt'can only get slices from an IntervalIndex if bounds are non-overlapping and all monotonic increasing or decreasing'r+   )r   rT   r/   r0   rX   r   )r"   r   r   r   stoprC   r&   r&   r'   +test_slice_locs_with_ints_and_floats_errors\  s   
"z9TestSliceLocs.test_slice_locs_with_ints_and_floats_errorsN)	r3   r4   r5   r   r   r/   r   r   r   r&   r&   r&   r'   r     s    N$
r   c                   @   s.   e Zd Zejdddgdd Zdd ZdS )TestPutmaskrt   z
US/PacificNc                 C   sv   t dd|d}t|}tj|jtd}d|dd< |||d }t|d gd t|dd   }t	
|| d S )	N
2016-01-01r   rs   r   Tr   r   rO   r   r   r-   r   zerosshapeboolputmaskr   r    r!   )r"   rt   dtir#   maskr$   r%   r&   r&   r'   test_putmask_dt64u  s   
"zTestPutmask.test_putmask_dt64c                 C   s   t ddd}||d  }t|}tj|jtd}d|dd< |||d }t|d gd t|dd   }t	
|| d S )	Nr   r   rq   r   r   Tr   rO   r   )r"   r   tdir#   r   r$   r%   r&   r&   r'   test_putmask_td64  s   
"zTestPutmask.test_putmask_td64)r3   r4   r5   r/   r   r   r   r   r&   r&   r&   r'   r   t  s    
r   c                   @   r6   )TestContainsc                 C   s   t jddgddgdd}d|vsJ d|vsJ d|vsJ tdddd|v s)J tdddd|vs4J tdddd|vs?J tdddd|vsJJ td	dd
d|vsUJ tddd
d|vs`J tdddd|vskJ d S )Nr   r   r   r*   r   r^   r   rf   rO   rH   rI   )r   r   r   r   r&   r&   r'   test_contains_dunder  s   z!TestContains.test_contains_dunderN)r3   r4   r5   r   r&   r&   r&   r'   r     s    r   )"rU   numpyr   r/   pandas.errorsr   pandasr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   pandas._testing_testingr    r   r7   r@   rE   r   r   r   r   r&   r&   r&   r'   <module>   s     H" & z{