o
    Û­jŒ>  ã                   @   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 d dlmZ d dlmZ ejdd„ ƒZG dd„ dƒZG d	d
„ d
ƒZdS )é    N)ÚSettingWithCopyError)Ú	DataFrameÚIndexÚ
IndexSliceÚ
MultiIndexÚSeriesÚconcat)ÚBDayc                  C   sp   t  g d¢g d¢g d¢g¡} tddgddgg d¢g d	¢gg d
¢g d¢g d¢g d¢gg d¢d�}t| |tdƒd�S )N©gEØðôJYà¿grùé·¯Àgî|?5^ºÝ¿gÌÑã÷6ý©?g²�ï§ÆK×?©gà-� Ü?g†ÉTÁ¨¤ö?gúíëÀ9#Ò?g—9]ð?g46<½RÆ?)gá“©‚Qå¿gž^)ËÇà¿g¶óýÔxéÖ¿gI�€&Â†ì?g=›UŸ«@ÚaÚxÚbÚq)çÄ±.n£$@ç      4@g      >@)é   é   é   )r   r   é   )r   r   r   )r   r   é   )r   r   r   )ÚoneÚtwoÚthreeÚfour©ÚlevelsÚcodesÚnamesÚABCDE©ÚindexÚcolumns)ÚnpÚarrayr   r   Úlist)Úarrr!   © r'   ú`/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/frame/indexing/test_xs.pyÚfour_level_index_dataframe   s   ýÿýr)   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestXSc                 C   s®  |  ¡ }|jd }| |¡}| ¡ D ]\}}	t |	¡r't || | ¡s&J ‚q|	|| | ks1J ‚qdddœddddœd	œ}
t|
ƒ}| d¡}|jtjksOJ ‚|d
 dksWJ ‚|d dks_J ‚t	j
tt d¡d�� | |jd tƒ  ¡ W d   ƒ n1 sw   Y  |jd
dd�}|d
 }t ||¡ |jd
dd�}t |¡� d|d d …< W d   ƒ n1 s²w   Y  |rÍt |d
 |d
 ¡ |dk ¡ rËJ ‚d S |dk ¡ sÕJ ‚d S )Nr   r   r   )Ú1Ú2r+   r,   Ú3)r+   r,   r-   )ÚAÚBr.   r/   z Timestamp('1999-12-31 00:00:00')©Úmatchr   )Úaxis)Úcopyr!   ÚxsÚitemsr#   Úisnanr   ÚdtypeÚobject_ÚpytestÚraisesÚKeyErrorÚreÚescaper	   ÚtmÚassert_series_equalÚassert_cow_warningÚall)ÚselfÚfloat_frameÚdatetime_frameÚusing_copy_on_writeÚwarn_copy_on_writeÚfloat_frame_origÚidxr4   ÚitemÚvalueÚ	test_dataÚframeÚseriesÚexpectedr'   r'   r(   Útest_xs'   s:   




ÿýÿzTestXS.test_xsc                 C   s¢   t dgtg dd�d�}d|d< d|d< d	|d
< d|d< d|d< | d¡}tg d¢tdƒdd�}t ||¡ t g d¢d�}| d¡}tg dtjd�}t ||¡ d S )Nr   Ústr)r7   r    ç      ð?r.   Úfoor/   ç       @ÚCÚbarÚDç      @ÚE)rQ   rR   rS   rU   rW   r   )r!   Úname©r   r   Úc©r!   r   )rY   r7   )	r   r   r4   r   r%   r>   r?   r#   Úfloat64)rB   Údfr4   ÚexpÚresultrN   r'   r'   r(   Útest_xs_cornerP   s   

zTestXS.test_xs_cornerc                 C   sB   t tj d¡ d¡g d¢d�}| d¡}|jd }t ||¡ d S )Nr   )r   r   )r   r   r[   r   r   r\   r[   )	r   r#   ÚrandomÚdefault_rngÚstandard_normalr4   Úilocr>   r?   )rB   r^   Úcrossr_   r'   r'   r(   Útest_xs_duplicatesc   s   þ

zTestXS.test_xs_duplicatesc                 C   s€   t dddœdddœdddœdddœdœƒ g d	¢¡}|jdd
dd�}|d d… }t ||¡ |jddd
gdd�}t ||¡ d S )NÚsatÚsun)r   r   Ú
strawberryé
   é   éØ  )ÚdayÚflavourÚsalesÚyear)rq   ro   rn   rn   F)ÚlevelÚ
drop_levelr   )rm   rh   rq   )r   Ú	set_indexr4   r>   Úassert_frame_equal©rB   r^   r`   rN   r'   r'   r(   Útest_xs_keep_levelm   s   üÿ
ùzTestXS.test_xs_keep_levelc                 C   s0  t t d¡ dd¡tdƒtdƒd�}| ¡ }|r=t ¡ � d| d¡d d …< W d   ƒ n1 s0w   Y  t 	||¡ d S |rnd}t
jt|d�� d| d¡d d …< W d   ƒ n1 s\w   Y  | d¡dk ¡ rlJ ‚d S t ¡ � d| d¡d d …< W d   ƒ n1 s†w   Y  | d¡dk ¡ s–J ‚d S )	Nr   r   r   r    é   r   zC\nA value is trying to be set on a copy of a slice from a DataFramer0   )r   r#   ÚarangeÚreshapeÚranger3   r>   Úraises_chained_assignment_errorr4   ru   r9   r:   r   ÚanyrA   )rB   Úusing_array_managerrE   rF   ÚdmÚdf_origÚmsgr'   r'   r(   Útest_xs_view}   s"   $
ÿÿ
ÿzTestXS.test_xs_viewN)Ú__name__Ú
__module__Ú__qualname__rO   ra   rg   rw   r‚   r'   r'   r'   r(   r*   &   s    )
r*   c                   @   s2  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	j
 dddgdgfg¡dd„ ƒZdd„ Ze	j
 ddddd„ eddgdd�fdddd„ edgdd�fg¡dd „ ƒZe	j
 d!d"d„ d#d„ g¡d$d%„ ƒZe	j
 d!d&d„ d'd„ g¡d(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:S );ÚTestXSWithMultiIndexc                 C   s‚   g d¢g d¢g}t t|Ž ƒ}tj|ddgd�}ttj d¡ d¡g d¢|d	�}|j	d
ddd�}|j
d d …dgf }t ||¡ d S )N)rU   rU   Úbazr‡   rR   rR   Úquxrˆ   )r   r   r   r   r   r   r   r   ÚfirstÚsecond©r   r   )r   é   )r.   r/   rT   r    )r   rU   )rŠ   r‰   r   ©rr   r2   r   )r%   Úzipr   Úfrom_tuplesr   r#   rb   rc   rd   r4   re   r>   ru   )rB   ÚarraysÚtuplesr!   r^   r`   rN   r'   r'   r(   Útest_xs_doc_example˜   s   þýz(TestXSWithMultiIndex.test_xs_doc_examplec                 C   s~   t ddƒ}tdƒ}tj||gddgd�}ttj d¡ t	|ƒdf¡|g d	¢ƒ}|j
ddd
�}|jdd d …f }t ||¡ d S )Niaß2ieß2ÚabcdeÚdateÚsecidr‹   r   r   )ÚXÚYÚZ©rr   )r{   r%   r   Úfrom_productr   r#   rb   rc   rd   Úlenr4   Úlocr>   ru   )rB   ÚdatesÚidsr!   r^   r`   rN   r'   r'   r(   Útest_xs_integer_key­   s   
ýz(TestXSWithMultiIndex.test_xs_integer_keyc                 C   sH   |}|j ddd�}||j d¡dk }tg d¢dd�|_t ||¡ d S )Nr   rŠ   r™   r   )rR   rU   r‡   rˆ   r‰   ©rY   )r4   r!   Úget_level_valuesr   r>   ru   ©rB   Ú multiindex_dataframe_random_datar^   r`   rN   r'   r'   r(   Útest_xs_level¼   s
   z"TestXSWithMultiIndex.test_xs_levelc                 C   sˆ   t j d¡ d¡}tg d¢g d¢g d¢gg d¢g d¢g d¢gd�}t||d�}t|d	d… d
gdggd�}|jddd�}t ||¡ d S )Nr   )r   r   )r   Úpr   )r   r   Úy)r[   ÚrÚz)r   r   r   ©r   r   r\   r   r   r   r[   r™   ©	r#   rb   rc   rd   r   r   r4   r>   ru   )rB   r&   r!   r^   rN   r`   r'   r'   r(   Útest_xs_level_eq_2Ã   s   þz'TestXSWithMultiIndex.test_xs_level_eq_2c                 C   s~   |}|  ¡ }|jddd�}|s|rd|d d …< nd}tjt|d�� d|d d …< W d   ƒ n1 s2w   Y  t ||¡ d S )Nr   rŠ   r™   rk   úAA value is trying to be set on a copy of a slice from a DataFramer0   ©r3   r4   r9   r:   r   r>   ru   )rB   r£   rE   rF   r^   r€   r`   r�   r'   r'   r(   Útest_xs_setting_with_copy_errorÎ   s   ÿz4TestXSWithMultiIndex.test_xs_setting_with_copy_errorc                 C   s‚   |}|  ¡ }|jdddgd�}|s|rd|d d …< nd}tjt|d�� d|d d …< W d   ƒ n1 s4w   Y  t ||¡ d S )N©r   r   r   r   r™   rk   r¬   r0   r­   )rB   r)   rE   rF   r^   r€   r`   r�   r'   r'   r(   Ú(test_xs_setting_with_copy_error_multipleã   s   ÿz=TestXSWithMultiIndex.test_xs_setting_with_copy_error_multiplez
key, level)r   rŠ   r   rŠ   c                 C   sv   |}t |gd ƒ}|jjdu sJ ‚t |jddd�gd ƒ}t|tƒr,|jt|ƒ|d�}n|j||d�}t ||¡ d S )Nr   Fr   rŠ   r™   )	r   r!   Ú	is_uniquer4   Ú
isinstancer%   Útupler>   ru   )rB   Úkeyrr   r£   rL   r^   rN   r`   r'   r'   r(   Útest_xs_with_duplicatesõ   s   
z,TestXSWithMultiIndex.test_xs_with_duplicatesc                 C   sf   g d¢}t |g d¢d� ddg¡}t dg d¢itdtjd	d
gdd�d�}|jddd�}t ||¡ d S )N))r   r“   r   )r   Úbbcder   )r¦   Úyzcdeé   )r¨   Úxbcdeé   )r¨   Né   )r¨   Úzbcder¸   )r¨   Úybcder»   )Úa1Úa2Úcnt©r"   r¾   r¿   rÀ   )rº   r»   r¸   r»   r¹   r¼   r½   r    r\   r¨   r™   )r   rt   r   r#   Únanr4   r>   ru   )rB   Úaccr^   rN   r`   r'   r'   r(   Útest_xs_missing_values_in_index  s   	
þz4TestXSWithMultiIndex.test_xs_missing_values_in_indexzkey, level, exp_arr, exp_indexr   Úlvl0c                 C   ó   | d d …dd…f S )Nr   r   r'   ©r   r'   r'   r(   Ú<lambda>  ó    zTestXSWithMultiIndex.<lambda>rU   rR   Úlvl1r    c                 C   rÆ   )Nr   r   r'   rÇ   r'   r'   r(   rÈ     rÉ   c           
      C   sx   t j d¡ d¡}tddgg d¢gg d¢g d¢gdd	gd
�}t||d�}|j||dd�}t||ƒ|d�}	t ||	¡ d S )Nr   )r   r   r   r   )rU   rR   ÚhelloÚworld)r   r   r   r   )r   r   r   r   rÅ   rÊ   r   rÁ   r   r�   rª   )
rB   r´   rr   Úexp_arrÚ	exp_indexr&   r!   r^   r`   rN   r'   r'   r(   Útest_xs_named_levels_axis_eq_1  s   	ýz3TestXSWithMultiIndex.test_xs_named_levels_axis_eq_1Úindexerc                 C   s   | j dddgd�S )Nr¯   r   r   r™   ©r4   ©r^   r'   r'   r(   rÈ   /  s    c                 C   s   |   d¡j ddd�S )Nr   r   r   r™   rÑ   rÒ   r'   r'   r(   rÈ   0  rÉ   c                 C   sZ   |}g d¢g}t dgdggdgdggddgd�}t||tdƒd	�}||ƒ}t ||¡ d S )
Nr   r   r   r   r   r   r   r   r    ©r   r   r%   r>   ru   ©rB   rÐ   r)   r^   Úexpected_valuesÚexpected_indexrN   r`   r'   r'   r(   Útest_xs_level_multiple,  s   
ÿ
ÿz+TestXSWithMultiIndex.test_xs_level_multiplec                 C   s   | j ddd�S )Nr   r   r™   rÑ   rÒ   r'   r'   r(   rÈ   @  s    c                 C   s
   |   d¡S )Nr   rÑ   rÒ   r'   r'   r(   rÈ   @  s   
 c                 C   st   |}g d¢g d¢g}t ddgddgddggd	d
gd	d
gd
d	ggg d¢d�}t||tdƒd�}||ƒ}t ||¡ d S )Nr
   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r    rÓ   rÔ   r'   r'   r(   Útest_xs_level0?  s   þý
ÿz#TestXSWithMultiIndex.test_xs_level0c                 C   s*   |}|  d¡j}|jd }t ||¡ d S )N©rU   r   r   )r4   Úvaluesr>   Úassert_almost_equalr¢   r'   r'   r(   Útest_xs_valuesT  s   
z#TestXSWithMultiIndex.test_xs_valuesc                 C   s(   |}|  d¡}|jd }t ||¡ d S )NrÙ   )r4   rœ   r>   r?   r¢   r'   r'   r(   Útest_xs_loc_equalityZ  s   

z)TestXSWithMultiIndex.test_xs_loc_equalityc                 C   sª   t g d¢ddggg d¢g d¢gd�}ttj d¡ d¡|d	�}|tu r'|d }|jd
d …  d¡}| 	t
dd d …f ¡}t ||¡ |jt
dd d …f  }t ||¡ d S )N))rR   rU   r   )rR   r‡   r   ©rR   rˆ   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r©   r   )é   r   r\   éþÿÿÿrÞ   )r   r   r#   rb   rc   rd   r   re   Ú	droplevelr4   r   r>   Úassert_equalrœ   )rB   Úframe_or_seriesr!   ÚobjrN   r`   r'   r'   r(   Ú+test_xs_IndexSlice_argument_not_implemented`  s   þz@TestXSWithMultiIndex.test_xs_IndexSlice_argument_not_implementedc                 C   sf   t dg d¢iƒ}|tu r|d }d}tjt|d�� |jddd� W d   ƒ d S 1 s,w   Y  d S )Nr.   ©r   r   r   zIndex must be a MultiIndexr0   r   Úasr™   )r   r   r9   r:   Ú	TypeErrorr4   )rB   rã   rä   r�   r'   r'   r(   Útest_xs_levels_raisest  s   "ÿz*TestXSWithMultiIndex.test_xs_levels_raisesc                 C   sl   t jg d¢ddgd�}tg d¢g|d�}|jddd	d
�}tddggt jddgddgd�d�}t ||¡ d S )N)©r   r   ©r   r¦   )r   r   Úlevel1Úlevel2r‹   ræ   rÁ   r   r   F©r2   rs   r   rê   rë   )r   r�   r   r4   r>   ru   )rB   Úmir^   r`   rN   r'   r'   r(   Ú"test_xs_multiindex_droplevel_false}  s   ÿÿþz7TestXSWithMultiIndex.test_xs_multiindex_droplevel_falsec                 C   sH   t g d¢gtg d¢ƒd�}|jdddd�}t ddgiƒ}t ||¡ d S )Nræ   rZ   rÁ   r   r   Frî   )r   r   r4   r>   ru   rv   r'   r'   r(   Útest_xs_droplevel_falseŒ  s   z,TestXSWithMultiIndex.test_xs_droplevel_falsec                 C   s6  t g d¢gtg d¢ƒd�}|jdddd�}t |jd d …df j|jd d …df j¡s-J ‚t |¡� d	|jd
< W d   ƒ n1 sBw   Y  |rQt ddgiƒ}nt dd	giƒ}t 	||¡ t g d¢gtg d¢ƒd�}|jdddd�}d	|jd
< |r‚t ddgiƒ}n|rŒt dd	giƒ}nt ddgiƒ}t 	||¡ d S )Nræ   rZ   rÁ   r   r   Frî   r   r   )r   r   )r   g      @r   )
r   r   r4   r#   Úshares_memoryre   Ú_valuesr>   r@   ru   )rB   r~   rE   rF   r^   r`   rN   r'   r'   r(   Útest_xs_droplevel_false_view“  s&   0ÿ
z1TestXSWithMultiIndex.test_xs_droplevel_false_viewc                 C   sj   t  g d¢¡}tg d¢g d¢g|d�}tjtdd�� |jddd	d
� W d   ƒ d S 1 s.w   Y  d S )N))r   Úmr   )r   Únr   )r¦   Úor[   ræ   )r   r   rß   rÁ   r¦   r0   )r   r¦   Fr   )rs   r2   )r   r�   r   r9   r:   r;   r4   )rB   rï   r^   r'   r'   r(   Ú$test_xs_list_indexer_droplevel_false·  s
   "ÿz9TestXSWithMultiIndex.test_xs_list_indexer_droplevel_falseN)rƒ   r„   r…   r’   rŸ   r¤   r«   r®   r°   r9   ÚmarkÚparametrizerµ   rÄ   r   rÏ   r×   rØ   rÜ   rÝ   rå   ré   rð   rñ   rô   rø   r'   r'   r'   r(   r†   —   sH    
þþ
þþ
ÿ
	$r†   )r<   Únumpyr#   r9   Úpandas.errorsr   Úpandasr   r   r   r   r   r   Úpandas._testingÚ_testingr>   Úpandas.tseries.offsetsr	   Úfixturer)   r*   r†   r'   r'   r'   r(   Ú<module>   s     
q