o
    Û­jš:  ã                   @   sÈ   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	m
Z
mZmZmZ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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)ÚCategoricalÚCategoricalDtypeÚCategoricalIndexÚ	DataFrameÚ
DateOffsetÚDatetimeIndexÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚconcatÚ
date_rangeÚget_dummiesÚperiod_range)ÚSparseArrayc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestGetitemc                 C   sr   t g d¢ddggddgddggd�}tdtdƒ|d	�}tjtd
d�� |d
  W d   ƒ d S 1 s2w   Y  d S )N)Úa_lotÚonlyoneÚ
notevenonei²  Ú é   r   )ÚlevelsÚcodeséÿÿÿÿé   )ÚindexÚcolumnsr   ©Úmatch)r	   r   ÚrangeÚpytestÚraisesÚKeyError)ÚselfÚmiÚdf© r&   úe/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/frame/indexing/test_getitem.pyÚ test_getitem_unused_level_raises   s   þ
"ÿz,TestGetitem.test_getitem_unused_level_raisesc                 C   sr   t ddd�}ttj d¡ d¡|d�}||d  }t ||jd d …df ¡ |d }t ||jd d …df ¡ d S )Nz1/1/2000é   )Úperiodsé   )é
   r)   ©r   r   )	r   r   ÚnpÚrandomÚdefault_rngÚstandard_normalÚtmÚassert_series_equalÚiloc)r#   Úrngr%   Útsr&   r&   r'   Útest_getitem_periodindex&   s   z$TestGetitem.test_getitem_periodindexc                 C   sZ   t tdƒtdƒgƒ}tddgddggdddg|d�}t|ƒ}|t|jƒ }t ||¡ d S )Nz
12-31-1999z
12-31-2000r   r   Úbool)Údtyper   r   )r   r   r   r   Úlistr   r2   Úassert_frame_equal)r#   ÚcatsÚexpectedÚdummiesÚresultr&   r&   r'   Ú1test_getitem_list_of_labels_categoricalindex_cols0   s
    z=TestGetitem.test_getitem_list_of_labels_categoricalindex_colsc                 C   sx   t ddgƒ}td|iƒ}t|dd�}|d }t ||¡ |jd d …df }t ||¡ |jd d …df }t ||¡ d S )Nr   r   ÚA©Úname)r   r   r
   r2   r3   r4   Úloc)r#   Údatar%   r=   r?   r&   r&   r'   Ú0test_getitem_sparse_column_return_type_and_dtype9   s   z<TestGetitem.test_getitem_sparse_column_return_type_and_dtypec                 C   s<   t ddggtddgdd�d�}|j}|d }t ||¡ d S )Nr   r+   rA   ÚBÚstring©r9   r-   )r   r   rA   r2   r3   ©r#   r%   r?   r=   r&   r&   r'   Útest_getitem_string_columnsH   s   z'TestGetitem.test_getitem_string_columnsN)Ú__name__Ú
__module__Ú__qualname__r(   r7   r@   rF   rK   r&   r&   r&   r'   r      s    
	r   c                	   @   s€   e Zd Zdd„ Zdd„ Zdd„ Zejjde	e
eedd	„ d
d	„ gg d¢d�ej dddg¡dd„ ƒƒZdd„ Zdd„ Zdd„ ZdS )ÚTestGetitemListLikec                 C   s`   t dgdgdgdœƒ}g d¢|_tjtdd�� |g d¢  W d   ƒ d S 1 s)w   Y  d S )Ng      ð?g       @ç      @)ÚxÚyÚz)rQ   rQ   rS   z\['y'\] not in indexr   )r   r   r    r!   r"   ©r#   r%   r&   r&   r'   Útest_getitem_list_missing_keyQ   s
   
"ÿz1TestGetitemListLike.test_getitem_list_missing_keyc                 C   sh   t tj d¡ d¡tdƒd�}d|j_|ddg }|jjdks!J ‚|jd d …dd …f }t	 
||¡ d S )Nr+   )é   rV   ÚAABCr-   ÚfoorG   ÚC)r   r.   r/   r0   r1   r:   r   rC   r4   r2   r;   rJ   r&   r&   r'   Útest_getitem_list_duplicates[   s   ÿz0TestGetitemListLike.test_getitem_list_duplicatesc                 C   sd   t g d¢g d¢gg d¢d�}d}tjtt |¡d�� |dg  W d   ƒ d S 1 s+w   Y  d S )N©r   r+   r   ©rV   r)   é   ©Úar_   Úbr-   z"None of [Index(['baf'], dtype=r   Úbaf)r   r    r!   r"   ÚreÚescape)r#   r%   Úmsgr&   r&   r'   Útest_getitem_dupe_colsh   s
   "ÿz*TestGetitemListLike.test_getitem_dupe_colsÚidx_typec                 C   s   t t| tt| ƒƒƒƒS ©N)ÚdictÚzipr   Úlen©Úkeysr&   r&   r'   Ú<lambda>u   s    zTestGetitemListLike.<lambda>c                 C   s   t t| tt| ƒƒƒƒ ¡ S rg   )rh   ri   r   rj   rl   rk   r&   r&   r'   rm   v   s    )r:   Úiterr   Úsetrh   Ú	dict_keys)Úidsr   r   r+   c                 C   s,  |dkr
|d}}nt tj d¡ d¡tg d¢dd�d�}d	}|jd |jd
 g}||ƒ}t||ƒƒ}t|t	t
fƒrXtjtdd�� ||  W d   ƒ d S 1 sQw   Y  d S || }	|jd d …|f }
|jj|
j_t |	|
¡ |||g ƒ}tjtdd�� ||  W d   ƒ d S 1 s�w   Y  d S )Nr   Úfoodr+   )é   r   ))rX   Úbar)ÚbazÚqux)ÚpeekÚaboo)ÚsthÚsth2rB   r-   )Úgoodrr   r   úas an indexer is not supportedr   znot in index)r   r.   r/   r0   r1   r   r   r:   Ú
isinstancero   rh   r    r!   Ú	TypeErrorrD   Únamesr2   r;   r"   )r#   rf   r   Úfloat_frameÚframeÚmissingrl   ÚidxÚ	idx_checkr?   r=   r&   r&   r'   Útest_getitem_listliken   s8   þþ

ÿý
"ÿz)TestGetitemListLike.test_getitem_listlikec                 C   s\   t g d¢g d¢dœƒ}dd„ dD ƒ}|j| }t ddgd	d
gdœddgd�}t ||¡ d S )Nr[   r\   ©r_   r`   c                 s   ó   � | ]}|V  qd S rg   r&   ©Ú.0rQ   r&   r&   r'   Ú	<genexpr>£   ó   € zBTestGetitemListLike.test_getitem_iloc_generator.<locals>.<genexpr>©r   r+   r+   r   r)   r]   r   ©r   )r   r4   r2   r;   ©r#   r%   Úindexerr?   r=   r&   r&   r'   Útest_getitem_iloc_generator    s
   
z/TestGetitemListLike.test_getitem_iloc_generatorc                 C   sX   t g d¢g d¢dœƒ}dd„ dD ƒ}|j|df }tdd	gd
ddgd�}t ||¡ d S )Nr[   r\   r†   c                 s   r‡   rg   r&   rˆ   r&   r&   r'   rŠ   ª   r‹   zRTestGetitemListLike.test_getitem_iloc_two_dimensional_generator.<locals>.<genexpr>rŒ   r   r)   r]   r`   r+   )rC   r   )r   r4   r
   r2   r3   rŽ   r&   r&   r'   Ú+test_getitem_iloc_two_dimensional_generator¨   s
   z?TestGetitemListLike.test_getitem_iloc_two_dimensional_generatorc              	   C   s
  t ttdƒƒtddtdd�d�d�}|jdd… }t g d	¢tg d
¢dtdd�d�d�}t ||¡ t ttdƒƒtddtddd�d�d�}|jdd… }t g d	¢tg d¢dtddd�d�d�}t ||¡ t ttdƒƒtddtdd�d�d�}|jdd… }t ||¡ d S )Nr,   z
01-01-2022r   )Údays)r*   Úfreqr�   ú
2022-01-01ú
2022-01-03)r   r   r+   )r”   z
2022-01-02r•   zdatetime64[ns])r9   r“   r+   )r’   Úhours)z2022-01-01 00:00:00z2022-01-02 02:00:00z2022-01-03 04:00:00r   )Úminutes)	r   r:   r   r   r   rD   r   r2   r;   rJ   r&   r&   r'   Ú!test_getitem_iloc_dateoffset_days¯   sH   
þýþ
ÿþ
ýþ
þz5TestGetitemListLike.test_getitem_iloc_dateoffset_daysN)rL   rM   rN   rU   rZ   re   r    ÚmarkÚparametrizer:   rn   r   ro   r…   r�   r‘   r˜   r&   r&   r&   r'   rO   P   s(    
úö%rO   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestGetitemCallablec                 C   s¨   |dd„  }|j d d …df }t ||¡ |dd„  }|j d d …ddgf }t ||j d d …ddgf ¡ |d d… }|dd„  }|jdd	gd d …f }t ||¡ d S )
Nc                 S   s   dS )NrA   r&   ©rQ   r&   r&   r'   rm   Ü   s    z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>rA   c                 S   s   ddgS )NrA   rG   r&   rœ   r&   r&   r'   rm   à   ó    rG   r   c                 S   s   g d¢S )N)TFTr&   rœ   r&   r&   r'   rm   å   r�   r   r+   )rD   r2   r3   r;   r4   )r#   r€   r?   r=   r%   r&   r&   r'   Útest_getitem_callableÚ   s   z)TestGetitemCallable.test_getitem_callablec                 C   s`   t ddggddggd�}t dgdggd�}|d }t ||¡ |jd d …df }t ||¡ d S )Nr   r+   r_   r`   r-   )r   r2   r;   rD   )r#   r%   r=   r?   r&   r&   r'   Ú%test_loc_multiindex_columns_one_levelé   s   z9TestGetitemCallable.test_loc_multiindex_columns_one_levelN)rL   rM   rN   rž   rŸ   r&   r&   r&   r'   r›   Ù   s    r›   c                   @   sâ   e Zd Zdd„ Zej dddgddggdd	gd
dggejdgejdgejdgddggfddgddggdd	gd
dggejdgejdgdd
gd	dggff¡dd„ ƒZ	ej
dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"S )#ÚTestGetitemBooleanMaskc                 C   sÌ  t dtjddd�itg d¢tg d¢dd�d	d
�d�}t dtjddd�itg d¢tg d¢dd�d	d
�d�}||jdk }|jg  }t ||¡ ||jdk }|jg  }t ||¡ ||jdk }|jg d¢ }t ||¡ ||jdk }|jg d¢ }t ||¡ ||jdk  }|jdg }t ||¡ ||jdk }|jg  }t ||¡ d}t	j
t|d�� ||jdk   W d   ƒ n1 sÀw   Y  t	j
t|d�� ||jdk  W d   ƒ d S 1 sßw   Y  d S )NrA   r]   Úint64rI   )r   r   r+   r   r   r+   )r   r+   r   T)ÚorderedrG   )r9   rC   r�   Fr_   r   )r   r   r   r+   rV   z7Unordered Categoricals can only compare equality or notr   )r   r.   Úaranger   r   r   r4   r2   r;   r    r!   r~   )r#   Údf3Údf4r?   r=   rd   r&   r&   r'   Ú(test_getitem_bool_mask_categorical_indexö   sV   ÿýü
ÿýü


	ÿ"ÿz?TestGetitemBooleanMask.test_getitem_bool_mask_categorical_indexzdata1,data2,expected_datar   r+   r   rV   g      à?r]   é   rs   rP   g      @g      @g      @g       @r)   c           
      C   sp   t t |¡ƒ}t t |¡ƒ}t||gdd�}||dk }dd„ t|ƒD ƒ}t |ƒjdddœd�}	t ||	¡ d S )	Nr   )Úaxisr+   c                 S   s   i | ]
\}}|t  |¡“qS r&   )r.   Úarray)r‰   ÚiÚcolr&   r&   r'   Ú
<dictcomp>T  s    z`TestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypes.<locals>.<dictcomp>r   )r+   r   r-   )r   r.   r©   r   Ú	enumerateÚrenamer2   r;   )
r#   Údata1Údata2Úexpected_dataÚdf1Údf2r%   r?   Úexdictr=   r&   r&   r'   Ú5test_getitem_bool_mask_duplicate_columns_mixed_dtypes7  s   zLTestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypesc                 C   s(   g d¢}t t d¡ dd¡|dd�}|S )N)rA   rA   rY   ÚDé   r   rV   Úfloat64©r   r9   )r   r.   r£   Úreshape)r#   Údupsr%   r&   r&   r'   Údf_dup_colsX  s   z"TestGetitemBooleanMask.df_dup_colsc                 C   sJ   |}d}t jt|d�� ||jdk  W d   ƒ d S 1 sw   Y  d S )Nz/cannot reindex on an axis with duplicate labelsr   r]   )r    r!   Ú
ValueErrorrA   )r#   r¼   r%   rd   r&   r&   r'   Ú;test_getitem_boolean_frame_unaligned_with_duplicate_columns^  s
   "ÿzRTestGetitemBooleanMask.test_getitem_boolean_frame_unaligned_with_duplicate_columnsc                 C   sX   t t d¡ dd¡g d¢dd�}||jdk }|j|_|}||jdk }t ||¡ d S ©Nr·   r   rV   )rA   rG   rY   r¶   r¸   r¹   r]   )r   r.   r£   rº   rY   r   r2   r;   ©r#   r¼   r%   r=   r?   r&   r&   r'   Ú2test_getitem_boolean_series_with_duplicate_columnsg  s   ÿzITestGetitemBooleanMask.test_getitem_boolean_series_with_duplicate_columnsc                 C   sT   t t d¡ dd¡g d¢dd�}||dk }|j|_|}||dk }t ||¡ d S r¿   )r   r.   r£   rº   r   r2   r;   rÀ   r&   r&   r'   Ú1test_getitem_boolean_frame_with_duplicate_columnsu  s   ÿzHTestGetitemBooleanMask.test_getitem_boolean_frame_with_duplicate_columnsc                 C   s"   t ƒ }||dk }t ||¡ d S )Nr   )r   r2   r;   )r#   r%   r³   r&   r&   r'   Ú%test_getitem_empty_frame_with_booleanƒ  s   z<TestGetitemBooleanMask.test_getitem_empty_frame_with_booleanc                 C   sš   t g d¢g d¢gg d¢d�}| ¡ }|d }t |¡� d|jd d …< W d   ƒ n1 s-w   Y  |r7|}nt g d¢g d¢gg d¢d�}t ||¡ d S )	Nr[   r\   r^   r-   r`   éd   )r   r+   rÄ   )rV   r)   rÄ   )r   Úcopyr2   Úassert_cow_warningrD   r;   )r#   Úusing_copy_on_writeÚwarn_copy_on_writer%   Údf_origÚviewr=   r&   r&   r'   Ú5test_getitem_returns_view_when_column_is_unique_in_dfŠ  s   ÿzLTestGetitemBooleanMask.test_getitem_returns_view_when_column_is_unique_in_dfc                 C   sR   t g d¢gtdgƒdddgd�}|tdgƒ }tdgtdgƒd�}t ||¡ d S )N)r   r+   r   rV   ÚKEYrG   rY   r-   r   rB   )r   Ú	frozensetr
   r2   r3   rJ   r&   r&   r'   Ú'test_getitem_frozenset_unique_in_column™  s    z>TestGetitemBooleanMask.test_getitem_frozenset_unique_in_columnN)rL   rM   rN   r¦   r    r™   rš   r.   Únanrµ   Úfixturer¼   r¾   rÁ   rÂ   rÃ   rË   rÎ   r&   r&   r&   r'   r    õ   s.    A ýýúþ

	r    c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestGetitemSlicec           
      C   s    t  ddd¡}t|ƒ}|ddg \}}t j d¡ d¡}|tur(|d d …df }|||d�}|||… }|jdd	… }	t 	||	¡ |j
||… }t 	||	¡ d S )
Ng      $@g      I@r+   r)   é   )é   r   r   r�   é   )r.   r£   r   r/   r0   r1   r   r4   r2   Úassert_equalrD   )
r#   Úframe_or_seriesÚvaluesr   ÚstartÚendrE   Úobjr?   r=   r&   r&   r'   Útest_getitem_slice_float64¢  s   z+TestGetitemSlice.test_getitem_slice_float64c                 C   sX   t dditg d¢ƒd�}tjtdd�� |dd…  W d   ƒ d S 1 s%w   Y  d S )	Nr_   r   )z11.01.2011 22:00z11.01.2011 23:00z12.01.2011 00:00z2011-01-13 00:00r�   z,Value based partial slicing on non-monotonicr   z
2011-01-01z
2011-11-01)r   r   r    r!   r"   rT   r&   r&   r'   Útest_getitem_datetime_sliceµ  s   ÿþÿ"ýz,TestGetitemSlice.test_getitem_datetime_slicec                 C   sb   t tj d¡ d¡ƒ}|jtd d dƒf }|jdksJ ‚|jtd d dƒtd ƒf }t 	||¡ d S )Nr+   )r,   rs   )r)   rs   )
r   r.   r/   r0   r1   r4   ÚsliceÚshaper2   r;   rJ   r&   r&   r'   Ú)test_getitem_slice_same_dim_only_one_axisÇ  s
   z:TestGetitemSlice.test_getitem_slice_same_dim_only_one_axisN)rL   rM   rN   rÛ   rÜ   rß   r&   r&   r&   r'   rÑ   ¡  s    rÑ   c                   @   s.   e Zd Zej dddhddig¡dd„ ƒZdS )ÚTestGetitemDeprecatedIndexersÚkeyr_   r`   c                 C   s^   t ddgddggt ddg¡d�}tjtdd	�� ||  W d   ƒ d S 1 s(w   Y  d S )
Nr   r+   r   rV   )r_   r   )r`   r+   r-   r|   r   )r   r	   Úfrom_tuplesr    r!   r~   )r#   rá   r%   r&   r&   r'   Ú$test_getitem_dict_and_set_deprecatedÑ  s   ÿ
"ÿzBTestGetitemDeprecatedIndexers.test_getitem_dict_and_set_deprecatedN)rL   rM   rN   r    r™   rš   rã   r&   r&   r&   r'   rà   Ð  s    rà   )rb   Únumpyr.   r    Úpandasr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   Úpandas._testingÚ_testingr2   Úpandas.core.arraysr   r   rO   r›   r    rÑ   rà   r&   r&   r&   r'   Ú<module>   s    @6 
 -/