o
    _~#gi                     @   sz   d dl m Z mZ d dlZd dlZd dlm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lmZ G dd dZdS )    datetime	timedeltaN)UnsortedIndexError)	DataFrameIndex
MultiIndexSeries	Timestamp)_mklblc                   @   s
  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zejddedddedddfdedddedddfdedd dedd!dfdedd dedd!dfdeddd"eddd"fdeddd"eddd"fdedd d"edd!d"fdedd d"edd!d"fd#edddedddfd#ed$ddedddfd#edd%dedd!dfd#ed$d%dedd!dfd#eddd"eddd"fd#ed$dd"eddd"fd#edd%d"edd!d"fd#ed$d%d"edd!d"fgd&d' ZdS )(TestMultiIndexSlicersc           	      C   s:  t tddtddtddtddg}ttt| |d	}|jt	d
dt	d ddgfd d f }|jdd |j
jD  }t|| |jdd |j
jD  }|jt	d
dt	d t	ddfd d f }t|| t jg dddgd}t jg dddgd}ttjddddd||d}|jddjdd}|jt	d t	d fd d f }t|| |jt	d t	d ft	d t	d ff }t|| |jd d t	d t	d ff }t|| |jt	d dgfd d f }|jddg }t|| |jt	d dfd d f }|jddg }t|| |jd d t	d d gff }|jd d ddgf }t|| |jt	d dft	d d gff }|jddgddgf }t|| |jd! }tg d"g d#d$tg d%dd&td'd gdd&d}t|| |jt	d ddgfd d f }|jg d( }t|| ttt| |d	}|jd
dd d ddgf }|jd)d |j
jD  }t|| |jt	d |jd d d*f dkfd d f }|jddg }t|| d+}tjt|d, |jt	d td-d.gfd d f  W d    n	1 sw   Y  tjtd/d, |jt	d dgf  W d    n	1 s/w   Y  |j
jdks=J |jddd0}|j
jdksMJ d1}tjt|d, |jt	d t	d'fd d f  W d    n	1 sqw   Y  |jt	d |jd d d*f dkfd d f }t||jddgd d f  d S )2NA   B   C   D   indexA1A3C1C3c                 S   0   g | ]\}}}}|d v r|dv r||||fqS r   A2r   r   r    .0abcdr    r    /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/indexing/multiindex/test_slice.py
<listcomp>"       
zITestMultiIndexSlicers.test_per_axis_per_level_getitem.<locals>.<listcomp>c                 S   r   )r   )r   C2r   r    r!   r    r    r'   r(   0   r)   )r      )r   r   )r      )r   r,   onetwonames)r#   foor#   bar)r$   r3   )r$   bahlvl0lvl1   int64dtyper   columnsr   axisr,   r-   r3   r   r#   )r,   r   	   )r   r      )r5   r3   )r,   r   r-   namer5   )r   r,   r-   c                 S   r   r   r    r!   r    r    r'   r(   w   r)   r4   zLcannot index with a boolean indexer that is not the same length as the indexmatchTFz\[1\] not in index)levelr@   z_MultiIndex slicing requires the index to be lexsorted: slicing on levels \[1\], lexsort depth 0)r   from_productr   r   nparangelento_numpylocslicer   valuestmassert_frame_equalfrom_tuplesreshape
sort_indexilocr   r	   assert_series_equalpytestraises
ValueErrorarrayKeyError_lexsort_depthr   )	selfixdfresultexpectedr   r>   smsgr    r    r'   test_per_axis_per_level_getitem   s   "&(& 
,& ,"z5TestMultiIndexSlicers.test_per_axis_per_level_getitemc                 C   s  t g dg dg dg ddg d }|jjrJ t ddgddgd	d	gd	d
gdg d }|jtd td d	fd d f }t|| |j	d	ddd}t|| t g dg dg dg ddg d }|jjrxJ t ddgddgd	d	gd	d
gdg d }|jtd td d	fd d f }|jjrJ t|| g d}t
|}tdg| |g}td	g| |d}| }|jtd tdf }td	g|d  |d d d }t|| d S )N)r3   r3   r3   r3   )r#   r#   r#   r#   )r,   r   r,   r-   )r,   r   r-   r   )r   r   r   r   )r   r   r   r3   r#   r,   r-   r   F)rH   
drop_level)r,   r   r,   r   )r,   r   r-   r   r      r   rC   rB   
         rj         rl   r9            @ rp   r   i )r   	set_indexrU   r   	is_uniquerN   rO   rQ   rR   xsrL   r   from_arraysr	   rW   )r^   r`   rb   ra   intsnidxr    r    r'   "test_multiindex_slicers_non_unique   sZ   
 
 
 
 "z8TestMultiIndexSlicers.test_multiindex_slicers_non_uniquec                 C   st  dd t dD }ddg}tj||gddgd}ttjd	d
ddd|tdd}tj	}|j
g dddgf }|jttdtdtddftddf }t|| |j|tdtd |dd ftddf }t|| |jttdtddftddf }t|| |jtddtddftddf }t|| |j|dd df|d f }t|| d S )Nc              	   S   s(   g | ]}t d dddddt|d qS )i  r,   rj   )daysr   )r"   ir    r    r'   r(      s   ( zNTestMultiIndexSlicers.test_multiindex_slicers_datetimelike.<locals>.<listcomp>rg   r,   r   date	frequencyr0   0   r:   r;   r   ABCDr=   )r   r   r   r   z2012-01-01 12:12:12z2012-01-03 12:12:12r   r   )r   r   )ranger   rI   r   rJ   rK   rT   listpd
IndexSlicerV   rN   rO   r
   rQ   rR   )r^   datesfreqr   r`   rx   rb   ra   r    r    r'   $test_multiindex_slicers_datetimelike   sd   	
		z:TestMultiIndexSlicers.test_multiindex_slicers_datetimelikec                 C   s  t dgd dgd  dgd  g dd g dg dd	}t|d
 |d
< |g d}| }|jtdd d f }|jdd }t	|| |jtdd d f }|}t	|| |jtd tddfd d f }|jg d }t	|| |jtd td tddfd d f }|jg d }t	|| |jtdtdfd d f }|jg d }t	|| |jtd tdfd d f }|}t	|| |jtd tddtdfd d f }|jg d }t	|| |jtd td tddfd d f }|jg d }t	|| d S )NA0r   r   r   )B0r   B1r   B2r-   )
2013-06-11
2013-07-02
2013-07-09
2013-07-30
2013-08-06r   r   r   r   r   
2013-09-03z
2013-10-01r   r   r   )   #   rl   rB   r   (   rn   r   r   r   r,   r   r-   r   r   )r   r   DATEVALUESr   )r   r   r   r   rh   r   r   )	r   r-   r   r   rC   rB   rj   rk   rl   2013070220130709)r,   r   rg   r   rj   r   )r   r,   r   rg   rh   ri   r   )r   r-   r   r   rC   rB   rj   rk   20130701)
r   r   to_datetimerr   rU   rN   rO   rV   rQ   rR   )r^   r`   df1ra   rb   r    r    r'   test_multiindex_slicers_edges7  sD   
 &&&z3TestMultiIndexSlicers.test_multiindex_slicers_edgesc                 C   sd  t j}ttddtddtddtddg}tjg ddd	gd
}ttjt	|t	| dd
t	|t	|f||d}|jtddtd ddgfd d f }|jdd |jjD  }t|| |j|ddd d ddgf d d f }t|| |jtd td ddgfd d f }|jdd |jjD  }t|| |j|d d d d ddgf d d f }t|| d}tjt|d |jddtdff  W d    n1 sw   Y  t|jdtd dff |jd jd d ddgf  |jdd}|jdtd dff  |jtd td ddgftd dff  d|jddd d d d ddgf< d S )Nr   r   r   r   r   r   r2   r7   r8   r0   r:   r;   r=   r   r   r   r   c                 S   r   r   r    r!   r    r    r'   r(     r)   zNTestMultiIndexSlicers.test_per_axis_per_level_doc_examples.<locals>.<listcomp>c                 S   (   g | ]\}}}}|d v r||||fqS r   r    r!   r    r    r'   r(         
z_MultiIndex slicing requires the index to be lexsorted: slicing on levels \[1\], lexsort depth 1rF   r#   r3   r   r,   r?   i)r   r   r   rI   r   rS   r   rJ   rK   rL   rT   rN   rO   r   rP   rQ   rR   rX   rY   r   rV   rU   )r^   rx   r   r>   r`   ra   rb   rd   r    r    r'   $test_per_axis_per_level_doc_examples  sZ   "&($(.(&z:TestMultiIndexSlicers.test_per_axis_per_level_doc_examplesc              	   C   s  t tddtddtddtddg}t jg ddd	gd
}ttjt|t| ddt|t|f||d	 j	dd}|j
ddddd d ddgf }|j
dd |jjD  }t|| |j
ddd d d d ddgf }|j
dd |jjD  }t|| |j
ddd d df }|j
d d td dff }t|| |j
ddd d df }|j
d d td dff }t|| dD ]0}d| d}tjt|d |j
|dd d d d ddgf  W d    n1 sw   Y  qd S )Nr   r   r   r   r   r   r2   r7   r8   r0   r:   r;   r=   r,   r?   r   r   r   r   r   c                 S   r   r   r    r!   r    r    r'   r(     r)   zATestMultiIndexSlicers.test_loc_axis_arguments.<locals>.<listcomp>r   c                 S   r   r   r    r!   r    r    r'   r(     r   r3   r>   )r   r   r3   zNo axis named z for object type DataFramerF   )r   rI   r   rS   r   rJ   rK   rL   rT   rU   rN   r   rP   rQ   rR   rO   rX   rY   rZ   )r^   r   r>   r`   ra   rb   r{   rd   r    r    r'   test_loc_axis_arguments  sZ   """$z-TestMultiIndexSlicers.test_loc_axis_argumentsc                 C   sf   t tdddtg dg dgd}|jddd	d
 }|jd d d df }t	|| d S )N   r-   rB   a1a2a3b1b2b3r>   r,   r?   r   r   )
r   rJ   rK   rT   r   rI   rN   rV   rQ   rR   r^   r`   ra   rb   r    r    r'   ?test_loc_axis_single_level_multi_col_indexing_multiindex_col_df  s   zUTestMultiIndexSlicers.test_loc_axis_single_level_multi_col_indexing_multiindex_col_dfc                 C   sl   t tdddtg dg dgd}|jddd	 }|jd d d df }g d|_t	
|| d S )
Nr   r-   rB   r   r   r   r,   r?   r   )r   rJ   rK   rT   r   rI   rN   rV   r>   rQ   rR   r   r    r    r'   @test_loc_axis_single_level_single_col_indexing_multiindex_col_df  s   
zVTestMultiIndexSlicers.test_loc_axis_single_level_single_col_indexing_multiindex_col_dfc                 C   sT   t tdddg dd}|jddd }ttg ddd	}t|| d S )
NrB   r-   )r#   r$   r%   r   r,   r?   r#   )r   r-   rg   rD   )	r   rJ   rK   rT   rN   r	   r[   rQ   rW   r   r    r    r'   *test_loc_ax_single_level_indexer_simple_df%  s   z@TestMultiIndexSlicers.test_loc_ax_single_level_indexer_simple_dfc           	      C   s  t j}tjg dddgd}tjg dddgd}ttjdd	d
dd||d}|jddjdd}|	 }d|j
td td fd d f< |	 }d|jd d d d f< t|| |	 }d|j
ddd d d d f< |	 }d|jd d d d f< t|| |	 }d|j
td td ftd td ff< |	 }d|jd d d d f< t|| |	 }d|j
d d td td ff< |	 }d|jd d d d f< t|| |	 }d|j
td dgfd d f< |	 }d|jddg< t|| |	 }d|j
td dfd d f< |	 }d|jddg< t|| |	 }d|j
ddd d df< |	 }d|jddg< t|| |	 }d|j
d d td dgff< |	 }d|jd d ddgf< t|| |	 }d|j
td dftd dgff< |	 }d|jddgddgf< t|| |	 }d|j
|d d df |d d dgf f< |	 }d|jddgddgf< t|| |	 }d|j
d< |	 }d|jddddf< t|| |	 }tjddgddggd	d
|j
td dftd dgff< |	 }d|jddgddgf< t|| |	 }d}tjt|d" tjdgddggd	d
|j
td dftd dgff< W d    n	1 s>w   Y  d}tjt|d tjg dd	d
|j
td dftd dgff< W d    n	1 sow   Y  |	 }|j
td dftd dgff d |j
td dftd dgff< |	 }|jddgddgf d |jddgddgf< t|| |	 }|j
td dftd dgff  |j
td dftd dgff 9  < |	 }|jddgddgf  |jddgddgf 9  < t|| |j
td dftd dgff 	 }d|j
d d df< |	 }|j
td dftd dgff  |9  < |	 }|jddgddgf  |jddgddgf 9  < t|| d S )Nr+   r.   r/   r0   r2   r7   r8   r9   r:   r;   r   r=   r   r?   r,   d   r-   r3   rA   r   z)setting an array element with a sequence.rF   z@Must have equal len keys and value when setting with an iterable)r   r   r   r   r   rh   )r%   r6   )r   r   r   rS   r   rJ   rK   rT   rU   copyrN   rO   rV   rQ   rR   r[   rX   rY   rZ   )	r^   rx   r   r>   df_origr`   rb   rd   rhsr    r    r'   test_per_axis_per_level_setitem-  s   & (
"$$",$0$(0z5TestMultiIndexSlicers.test_per_axis_per_level_setitemc                 C   s  t tdttdtdg}tj}t	||d d d |d d d  t	||dd d |dd d  t	||dd d |dd d  t	||d dd |d dd  t	||d dd |d dd  t	||dd	d |dd
d  t	||dd	d |dd
d  t	||ddd |dd
d  t	||ddd |dd
d  t	||d	dd |d d  t	||dd d |dd d  t	||d dd |d dd  t	||ddd |ddd  d S )N   abcder   r   r&      )r&   ri   r$   r-   )r$   r   )r%   r   rh   rB   )er   r9   )
r	   rJ   rK   r   rI   r   r   r   rQ   !assert_indexing_slices_equivalent)r^   serSLCr    r    r'   0test_multiindex_label_slicing_with_negative_step  s&   """"""""" ""zFTestMultiIndexSlicers.test_multiindex_label_slicing_with_negative_stepc                 C   s   g d}t |tdg}tttd|dgd}|jtjd d ddf d d f }|jd }tttdd	dgtdd	d
}t	|| |jd }tttdddgtdd	d
}t	|| d S )N)r#   r$   r%   r&   i  i  Testr=      F   r#   G   )r>   r   r&   i  i#  )
r   rI   r   r   r   rN   r   r   rQ   rR   )r^   r   rx   r`   df_slicera   rb   r    r    r'   !test_multiindex_slice_first_level  s   $
 
z7TestMultiIndexSlicers.test_multiindex_slice_first_levelc                 C   s   |}|d }|dd  }| |jdd  }t|| |d  }|d  }d|dd < d|jdd < t|j|j |dd  }| |jdd  }t|| d S )Nr   r   r   )	reindexr   rQ   rW   r   rV   assert_numpy_array_equalrP   rR   )r^   /multiindex_year_month_day_dataframe_random_dataymdrc   ra   rb   expr    r    r'   test_int_series_slicing  s   z-TestMultiIndexSlicers.test_int_series_slicingzdtype, loc, ilocintNr   r-   r,   r   rq   strr&   r$   c                 C   s   t dtdd| }t|gd }td|dgd}tj}|j|d d f }|j|| d d f }	|j||d d f d d f }
|j|d d |f d d f }t	
|	| t	
|
| t	
|| d S )Nr   r   )r   r   r   g      ?r   r=   )r   r   r   ru   r   r   r   rV   rN   rQ   rR   )r^   r<   rN   rV   labelsmir`   r   rb   result_get_locresult_get_locs_level_0result_get_locs_level_1r    r    r'    test_loc_slice_negative_stepsize  s   z6TestMultiIndexSlicers.test_loc_slice_negative_stepsize)__name__
__module____qualname__re   ry   r   r   r   r   r   r   r   r   r   r   r   rX   markparametrizerO   r   r    r    r    r'   r      sJ     T=JKB 
r   )r   r   numpyrJ   rX   pandas.errorsr   pandasr   r   r   r   r	   r
   pandas._testing_testingrQ   pandas.tests.indexing.commonr   r   r    r    r    r'   <module>   s    