a
    oÝEbÁ0  ã                   @   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 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ÚDatetimeIndexÚIndexÚ
MultiIndexÚSeriesÚ	TimestampÚconcatÚget_dummiesÚperiod_range)ÚSparseArrayc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestGetitemc                 C   sp   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   ƒ n1 sb0    Y  d S )N)Za_lotZonlyoneÚ
notevenonei²  Ú é   r   )ÚlevelsÚcodeséÿÿÿÿé   )ÚindexÚcolumnsr   ©Úmatch)r   r   ÚrangeÚpytestÚraisesÚKeyError)ÚselfÚmiÚdf© r"   úh/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/frame/indexing/test_getitem.pyÚ test_getitem_unused_level_raises   s    þz,TestGetitem.test_getitem_unused_level_raisesc                 C   sv   t ddd�}ttj dd¡|d�}||d  }t ||jd d …df ¡ t|ƒ |d }t ||jd d …df ¡ d S )Nz1/1/2000é   )Zperiodsé
   ©r   r   )	r   r   ÚnpÚrandomÚrandnÚtmÚassert_series_equalÚilocÚrepr)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   Zuint8)Údtyper   r   )r   r
   r   r   Úlistr   r+   Úassert_frame_equal)r   ZcatsÚexpectedZdummiesÚresultr"   r"   r#   Ú1test_getitem_list_of_labels_categoricalindex_cols1   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	   r+   r,   r-   Úloc)r   Údatar!   r5   r6   r"   r"   r#   Ú0test_getitem_sparse_column_return_type_and_dtype<   s    z<TestGetitem.test_getitem_sparse_column_return_type_and_dtypeN)Ú__name__Ú
__module__Ú__qualname__r$   r1   r7   r=   r"   r"   r"   r#   r      s   r   c                	   @   sx   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S )ÚTestGetitemListLikec                 C   s^   t dgdgdgdœƒ}g d¢|_tjtdd�� |g d¢  W d   ƒ n1 sP0    Y  d S )Ng      ð?g       @ç      @)ÚxÚyÚz)rC   rC   rE   z\['y'\] not in indexr   )r   r   r   r   r   )r   r!   r"   r"   r#   Útest_getitem_list_missing_keyM   s    
z1TestGetitemListLike.test_getitem_list_missing_keyc                 C   sd   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 )Né   ZAABCr'   ÚfooÚBÚCé   )
r   r(   r)   r*   r3   r   r:   r-   r+   r4   ©r   r!   r6   r5   r"   r"   r#   Útest_getitem_list_duplicatesW   s    z0TestGetitemListLike.test_getitem_list_duplicatesc                 C   sb   t g d¢g d¢gg d¢d�}d}tjtt |¡d�� |dg  W d   ƒ n1 sT0    Y  d S )N©r   rK   r   ©rG   r%   é   )ÚarQ   Úbr'   z?"None of [Index(['baf'], dtype='object')] are in the [columns]"r   Zbaf)r   r   r   r   ÚreÚescape)r   r!   Úmsgr"   r"   r#   Útest_getitem_dupe_colsb   s    z*TestGetitemListLike.test_getitem_dupe_colsÚidx_typec                 C   s   t t| tt| ƒƒƒƒS ©N)ÚdictÚzipr   Úlen©Úlr"   r"   r#   Ú<lambda>o   ó    zTestGetitemListLike.<lambda>c                 C   s   t t| tt| ƒƒƒƒ ¡ S rX   )rY   rZ   r   r[   Úkeysr\   r"   r"   r#   r^   p   r_   )r3   Úiterr   ÚsetrY   Ú	dict_keys)Úidsr   r   rK   c              	   C   sL  |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ƒr¤t
 t¡� || }	W d   ƒ q¬1 s˜0    Y  n|| }	|jd d …|f }
|jj|
j_t
 |	|
¡ |||g ƒ}tjtdd��D t
 t¡� ||  W d   ƒ n1 �s0    Y  W d   ƒ n1 �s>0    Y  d S )Nr   Úfoodé   r   ))rH   Úbar)ZbazZqux)ÚpeekZaboo)ZsthZsth2r9   r'   )Zgoodre   r   znot in indexr   )r   r(   r)   r*   r   r   r3   Ú
isinstancerb   rY   r+   Úassert_produces_warningÚFutureWarningr;   Únamesr4   r   r   r   )r   rW   r   Úfloat_frameÚframeÚmissingr`   ÚidxZ	idx_checkr6   r5   r"   r"   r#   Útest_getitem_listlikeh   s0    þþ(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 )NrN   rO   ©rQ   rR   c                 s   s   | ]
}|V  qd S rX   r"   ©Ú.0rC   r"   r"   r#   Ú	<genexpr>œ   r_   zBTestGetitemListLike.test_getitem_iloc_generator.<locals>.<genexpr>©r   rK   rK   r   r%   rP   r   ©r   )r   r-   r+   r4   ©r   r!   Zindexerr6   r5   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 )NrN   rO   rr   c                 s   s   | ]
}|V  qd S rX   r"   rs   r"   r"   r#   ru   £   r_   zRTestGetitemListLike.test_getitem_iloc_two_dimensional_generator.<locals>.<genexpr>rv   r   r%   rP   rR   rK   )r:   r   )r   r-   r	   r+   r,   rx   r"   r"   r#   Ú+test_getitem_iloc_two_dimensional_generator¡   s
    z?TestGetitemListLike.test_getitem_iloc_two_dimensional_generatorN)r>   r?   r@   rF   rM   rV   r   ÚmarkÚparametrizer3   ra   r   rb   rq   ry   rz   r"   r"   r"   r#   rA   L   s$   
úö$rA   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 )Nr8   r"   ©rC   r"   r"   r#   r^   ¬   r_   z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>r8   c                 S   s   ddgS )Nr8   rI   r"   r~   r"   r"   r#   r^   °   r_   rI   r   c                 S   s   g d¢S )N)TFTr"   r~   r"   r"   r#   r^   µ   r_   r   rK   )r;   r+   r,   r4   r-   )r   rm   r6   r5   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   rK   rQ   rR   r'   )r   r+   r4   r;   )r   r!   r5   r6   r"   r"   r#   Ú%test_loc_multiindex_columns_one_level¹   s    z9TestGetitemCallable.test_loc_multiindex_columns_one_levelN)r>   r?   r@   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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‚0    Y  t	j
t|d�� ||jdk  W d   ƒ n1 �sÀ0    Y  d S )Nr8   rP   Zint64)r2   )r   r   rK   r   r   rK   )r   rK   r   T)ZorderedrI   )r2   r:   rw   FrQ   r   )r   r   r   rK   rG   z7Unordered Categoricals can only compare equality or notr   )r   r(   Úaranger   r   r   r-   r+   r4   r   r   Ú	TypeError)r   Zdf3Zdf4r6   r5   rU   r"   r"   r#   Ú(test_getitem_bool_mask_categorical_indexÆ   sR    ÿýü
ÿýü


	.z?TestGetitemBooleanMask.test_getitem_bool_mask_categorical_indexzdata1,data2,expected_datar   rK   r   rG   g      à?rP   é   rf   rB   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   )ZaxisrK   c                 S   s   i | ]\}}|t  |¡“qS r"   )r(   Úarray)rt   ÚiÚcolr"   r"   r#   Ú
<dictcomp>%  r_   z`TestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypes.<locals>.<dictcomp>r   )rK   r   r'   )r   r(   r†   r   Ú	enumerateÚrenamer+   r4   )
r   Zdata1Zdata2Zexpected_dataZdf1Údf2r!   r6   Zexdictr5   r"   r"   r#   Ú5test_getitem_bool_mask_duplicate_columns_mixed_dtypes  s    zLTestGetitemBooleanMask.test_getitem_bool_mask_duplicate_columns_mixed_dtypesc                 C   s(   g d¢}t t d¡ dd¡|dd�}|S )N)r8   r8   rJ   ÚDé   r   rG   Úfloat64©r   r2   )r   r(   r‚   Úreshape)r   Zdupsr!   r"   r"   r#   Údf_dup_cols)  s    z"TestGetitemBooleanMask.df_dup_colsc              	   C   sv   |}d}t jt|d��L tjtdd�� ||jdk  W d   ƒ n1 sJ0    Y  W d   ƒ n1 sh0    Y  d S )Nz/cannot reindex on an axis with duplicate labelsr   z
non-uniquerP   )r   r   Ú
ValueErrorr+   rj   rk   r8   )r   r“   r!   rU   r"   r"   r#   Ú;test_getitem_boolean_frame_unaligned_with_duplicate_columns/  s
    zRTestGetitemBooleanMask.test_getitem_boolean_frame_unaligned_with_duplicate_columnsc                 C   sf   t t d¡ dd¡g d¢dd�}||jdk }|j|_|}||jdk }t ||¡ |j t	|ƒ d S ©Nr�   r   rG   )r8   rI   rJ   rŽ   r�   r‘   rP   )
r   r(   r‚   r’   rJ   r   r+   r4   ÚdtypesÚstr©r   r“   r!   r5   r6   r"   r"   r#   Ú2test_getitem_boolean_series_with_duplicate_columns9  s    ÿzITestGetitemBooleanMask.test_getitem_boolean_series_with_duplicate_columnsc                 C   sb   t t d¡ dd¡g d¢dd�}||dk }|j|_|}||dk }t ||¡ |j t|ƒ d S r–   )	r   r(   r‚   r’   r   r+   r4   r—   r˜   r™   r"   r"   r#   Ú1test_getitem_boolean_frame_with_duplicate_columnsI  s    ÿzHTestGetitemBooleanMask.test_getitem_boolean_frame_with_duplicate_columnsc                 C   s"   t ƒ }||dk }t ||¡ d S )Nr   )r   r+   r4   )r   r!   rŒ   r"   r"   r#   Ú%test_getitem_empty_frame_with_booleanZ  s    z<TestGetitemBooleanMask.test_getitem_empty_frame_with_booleanN)r>   r?   r@   r„   r   r{   r|   r(   Únanr�   Zfixturer“   r•   rš   r›   rœ   r"   r"   r"   r#   r�   Å   s(   B ýýúþ


r�   c                   @   s   e Z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rL|d d …df }|||d	�}|||… }|jdd
… }	t ||	¡ |j	||… }t ||	¡ d S )Ng      $@g      I@rK   r%   é   é   r   r   rw   é   )
r(   r‚   r   r)   r*   r   r-   r+   Zassert_equalr;   )
r   Zframe_or_seriesÚvaluesr   ÚstartÚendr<   Úobjr6   r5   r"   r"   r#   Útest_getitem_slice_float64c  s    z+TestGetitemSlice.test_getitem_slice_float64c                 C   sv   t dditg d¢ƒd�}t t¡� |dd… }W d   ƒ n1 sD0    Y  t dditg d¢ƒd�}t ||¡ d S )NrQ   r   )ú11.01.2011 22:00ú11.01.2011 23:00z12.01.2011 00:00ú2011-01-13 00:00rw   z
2011-01-01z
2011-11-01)r§   r¨   r©   )r   r   r+   rj   rk   r4   rL   r"   r"   r#   Útest_getitem_datetime_slicev  s    ÿþ*ÿþz,TestGetitemSlice.test_getitem_datetime_sliceN)r>   r?   r@   r¦   rª   r"   r"   r"   r#   rž   b  s   rž   c                   @   s.   e Zd Zej dddhddig¡dd„ ƒZdS )ÚTestGetitemDeprecatedIndexersÚkeyrQ   rR   c                 C   sX   t ddgddggt ddg¡d�}t t¡� ||  W d   ƒ n1 sJ0    Y  d S )Nr   rK   r   rG   )rQ   r   )rR   rK   r'   )r   r   Úfrom_tuplesr+   rj   rk   )r   r¬   r!   r"   r"   r#   Ú$test_getitem_dict_and_set_deprecated�  s
    ÿzBTestGetitemDeprecatedIndexers.test_getitem_dict_and_set_deprecatedN)r>   r?   r@   r   r{   r|   r®   r"   r"   r"   r#   r«   Ž  s   r«   )rS   Únumpyr(   r   Zpandasr   r   r   r   r   r   r   r	   r
   r   r   r   Zpandas._testingZ_testingr+   Zpandas.core.arraysr   r   rA   r}   r�   rž   r«   r"   r"   r"   r#   Ú<module>   s   84] ,