o
    d4                  
   @   sZ  d Z ddlmZ 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 ddlmZ dd Zdd	 Zd
d Zdd Zdd Zdd Zej dedg ddeddieddie!dgeg dg ddedg diedg digg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,d0d1 Z-d2d3 Z.d4d5 Z/d6d7 Z0ej d8ed9d:d;d<ed=d:d>d<ed?d:d@d<gdAdB Z1dCdD Z2dEdF Z3dGdH Z4dIdJ Z5dKdL Z6dMdN Z7dOdP Z8dQdR Z9ej dSi dTdUigej dVg dWdWge:ddXe;g gdYdZ Z<G d[d\ d\Z=dS )]z test get/set & misc     )	timedeltaN)IndexingError)NA	DataFrameIndex
IndexSlice
MultiIndexSeries	Timedelta	Timestampconcat
date_rangeperiod_rangetimedelta_rangec                  C   s<  t tjdg dd} d}tjt|d | d  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    n1 sZw   Y  |  } tjt|d | d  W d    n1 syw   Y  d	}tjt|d d| d< W d    d S 1 sw   Y  d S )
N   )abr   r   r   indexz/index 5 is out of bounds for axis 0 with size 5matchr   z^'c'$cz7index 5 is out of bounds for axis (0|1) with size 5|^5$)	r	   nprandomrandnpytestraises
IndexErrorKeyErrorZ
sort_index)smsg r!   ^/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/series/indexing/test_indexing.pytest_basic_indexing   s&   




"r#   c                 C   s\   | }t g d|d}ttd|d}|d }tddgt ddg|dd}tj||dd	 d S )
N   r   r%   dtype   r   r%   r      TZcheck_exactr   r	   rangetmassert_series_equal)any_numeric_dtyper'   idxserresultexpectedr!   r!   r"   6test_getitem_numeric_should_not_fallback_to_positional0   s   r4   c                 C   sP   | }t g d|d}ttd|d}d|d< tg d|d}tj||dd	 d S )
Nr$   r&   r(   r   
   r%   )r5   r%   r5   Tr*   r+   )r/   r'   r0   r1   r3   r!   r!   r"   6test_setitem_numeric_should_not_fallback_to_positional:   s   r6   c                 C   sf   | j g d }| | }| |}t|| | |d |d  }| j|d |d  }t|| d S )Nr   r5      r   r)   )r   reindexr-   r.   loc)datetime_seriesindicesr2   r3   r!   r!   r"   test_basic_getitem_with_labelsD   s   
r=   c                  C   sj   t tddddg dd} tddd}| jd }||ksJ | jd	 }||ks)J | d }||ks3J d S )
Nz
2011-01-01r(   z
US/Eastern)periodstzr   r   r   r   )r?   r   r   )r	   r   r   r:   iloc)r1   r3   r2   r!   r!   r"    test_basic_getitem_dt64tz_valuesP   s   

rB   c                  C   s@   t tjd} | d }t||  d| d< |dk sJ d S )Nr5   .r   )r	   r   r   r   r-   r.   all)r   r2   r!   r!   r"   test_getitem_setitem_ellipsis_   s
   rD   z$result_1, duplicate_item, expected_1   )r%   r)   r)   r(   r%   r)   r%   i9  r&   r%   r)   r(   c                 C   s<   |  |}| |}t|d | |d | d ksJ d S )Nr%   r)   )_appendr-   r.   )Zresult_1Zduplicate_itemZ
expected_1r2   r3   r!   r!   r"   $test_getitem_with_duplicates_indicesi   s   

rI   c                  C   sF   t g dg d} | jd | d ksJ d| jd< t| d d d S )NrG   r@   r   r   r   )r	   rA   r-   Zassert_almost_equalr   r!   r!   r"   test_getitem_setitem_integers   s   
rK   c                  C   s   t dddd} t| }t|d tsJ t|jd tsJ t|jd ts(J t|jd ts2J t|jd	 ts<J t| | d
}t|d tsKJ t|j| d  tsWJ t|jd tsaJ t|j| d  tsmJ t|jd	 tswJ d S )NZ20090415Z20090519B)freqr   r%   r)   r(      r   )r   r	   
isinstancer   atiatr:   rA   rngr1   r!   r!   r"   test_series_box_timestamp   s   rT   c                  C   s|   t dddd} t| }t|d tsJ t|jd tsJ t|jd ts(J t|jd ts2J t|jd	 ts<J d S )
Nz	1 day 1 sr   hr>   rM   r   r%   r)   r(   rN   )r   r	   rO   r
   rP   rQ   r:   rA   rR   r!   r!   r"   test_series_box_timedelta   s   rW   c                 C   s\   t tdttdddd}tjtdd | |d  W d    d S 1 s'w   Y  d S )	Nr5   r      r)   r   z^1$r   r%   )r	   r,   listr   r   r   
indexer_slr1   r!   r!   r"   test_getitem_ambiguous_keyerror   s   "r\   c                 C   s\   t g dg d}tjttdd | |g d  W d    d S 1 s'w   Y  d S )N)r%   r)   r(   rN   )foobarr]   bahz['bam'] not in indexr   )r]   r^   r_   Zbam)r	   r   r   r   reescaperZ   r!   r!   r"   test_getitem_dups_with_missing   s   "rb   c                 C   sX   t tdttdddd}| }d| |d< t|t dgdgdg}t|| d S )Nr5   r   rX   r)   r   r   r%   )r	   r,   rY   copyr   r-   r.   )r[   r   s2r3   r!   r!   r"   test_setitem_ambiguous_keyerror   s
   re   c                 C   sp   t j| | jd < t j| g d< t j| d< t | d sJ t | d s&J d| t | < t | d r6J d S )Nr   )r%   r)         r)   )r   NaNr   isnan)r;   r!   r!   r"   test_setitem   s   
rj   c                 C   s6   | dd }t |t |jksJ |jjdu sJ d S )Nr   rX   T)lenr   Z	is_unique)r;   slr!   r!   r"   test_setslice   s   rm   c                 C   st  d}t jt|d | d d df  W d    n1 sw   Y  t jt|d d| d d df< W d    n1 s;w   Y  d}t jt|d | td dg  W d    n1 s\w   Y  | td df }| d d }t|| d}t jt|d | dtd d g  W d    n1 sw   Y  t jt|d d| dtd d g< W d    d S 1 sw   Y  d S )Nz0key of type tuple not found and not a MultiIndexr   r)   z Indexing with a single-item listr   zunhashable type(: 'slice')?)r   r   r   
ValueErrorslicer-   r.   	TypeError)r;   r    r2   r3   r!   r!   r"   !test_basic_getitem_setitem_corner   s*   "rq   c                 C   s  |   }| dd }| dd  }|dd }| jd |jvs J |jd |jvs*J t|t|jks5J | |jd  ||jd  ksEJ |jd | jd ksQJ t|t| dd  s`J | dd }d|d d < |rvt| | d S | dd dk sJ d S )Nr5   rX   i	   r   r%      )	rc   r   rk   r-   ZequalContentsr   arrayr.   rC   )Zstring_seriesZobject_seriesusing_copy_on_writeoriginalZnumSliceZnumSliceEndZobjSlicerl   r!   r!   r"   
test_slice   s    rw   c                  C   s   t g td} td| jd< t| t tddgd | | j	dd} t| t t
jtdgddgd td| jd< t tdddgd}t| | d S )Nr&   r%   rL   z1 daysr   r   A)r	   objectr   r:   r-   r.   r
   r9   r   insertr   nan)r   r3   r!   r!   r"   test_timedelta_assignment  s   "r|   c                 C   s   t dd dD }|jg ddd}|d u sJ tdgdgd}d	|d
< | }| |d
 | | r6|}n t g dg dg dg dd}|jg ddd}|d u sVJ t|| d S )Nc                 S   s   i | ]}|g d qS )rG   r!   ).0r   r!   r!   r"   
<dictcomp>  s    z3test_underlying_data_conversion.<locals>.<dictcomp>r@   T)Zinplacer%   )r)   r)   r)   r   r   valrG   )r   r%   r   )r   r   r   r   )r   Z	set_indexr	   rc   updater-   assert_frame_equal)ru   dfreturn_valuer   Zdf_originalr3   r!   r!   r"   test_underlying_data_conversion  s    r   c                 C   s,   | g d }t j|d< t | d rJ d S )Nr7   r%   r5   )r   rh   ri   )r;   seqr!   r!   r"   test_preserve_refs%  s   
r   c                 C   s>   | }t tjt||dd}||d }|j|jksJ d S )NZsth)r   namer]   )r	   r   r   r   rk   r   )Z%lexsorted_two_level_string_multiindexr[   r   r1   r2   r!   r!   r"   test_multilevel_preserve_name+  s   r   r   z
2014-01-01rX   ZMSrV   z2014-01M0Hc              
   C   s   t | d }t | d }ttd| }t}|| d fD ]O}t|||d d |dd d  t||d |d |d dd  || d fD ]$}t||||d |ddd  t||||d |ddd  qFqd S )Nrr      rX      r   )strr	   r   Zaranger   r-   Z!assert_indexing_slices_equivalent)r   Zkeystr1Zkeystr2r1   ZSLCkeykey2r!   r!   r"   test_slice_with_negative_step6  s   	"""$r   c                  C   sP   t ddgddgd} | d dksJ | d dksJ d| d< | d dks&J d S )Nr%   r)   )r   )r   r   r(   )r	   rJ   r!   r!   r"   test_tuple_indexN  s
   r   c                  C   sb   t dt d} }tddg| |gd}||  dksJ || dks#J d||< || dks/J d S )Nr   r   r%   r)   r   r(   )	frozensetr	   )Zidx0Zidx1r   r!   r!   r"   test_frozenset_indexW  s   r   c                  C   sN   t ddgddgd} |  }t ddgddgd}|| j| dk< t| | d S )	Nr%   r)   r   r   r   rg      d   )r	   rc   r:   r-   r.   )r1   r3   rhsr!   r!   r"   "test_loc_setitem_all_false_indexera  s
   r   c                  C   s<   t dg} | jt tdgdd }t g dd}t|| d S )Nr%   Fbooleanr&   Zint64)r	   r:   r   r-   r.   r1   r2   r3   r!   r!   r"   +test_loc_boolean_indexer_non_matching_indexj  s   
r   c                  C   s^   t dg} t tdgdddgd}tjtdd | j|  W d    d S 1 s(w   Y  d S )Nr%   Fr   r)   )r'   r   ZUnalignabler   )r	   r   r   r   r   r:   )r1   indexerr!   r!   r"   ,test_loc_boolean_indexer_miss_matching_indexr  s
   
"r   c                  C   sB   t ddgi} td| i}| |jd< t| | d}t|| d S )Nr   r%   label	new_label)r   r   )r   r	   r:   r-   r.   )r   r1   r3   r!   r!   r"   (test_loc_setitem_nested_data_enlargementz  s
   
r   c                  C   sL   t dtg dddd} | jdd }t dtdgddd}t|| d S )Nr%   )r   r%   r)   ZInt64r&   r   r)   r(   )r	   r   r:   r-   r.   r   r!   r!   r"   'test_loc_ea_numeric_index_oob_slice_end  s   r   c                  C   sL   t ddd} tjtdd | jd  W d    d S 1 sw   Y  d S )Nr%   r   )TFr   r   )r	   r   r   r   r:   )r1   r!   r!   r"   test_getitem_bool_int_key  s   "r   r   r   xr   Fr   c                 C   s6   t dddgi|}| }d|j| < t|| d S )Nr   r%   r)   g      ?)r   rc   r:   r-   r   )r   r   r   r3   r!   r!   r"   test_setitem_empty_indexer  s   
r   c                   @   s   e Zd Zejddhddigdd Zejddhddidhdfddidfgdd Zejddhddigdd	 Zejddhddidhdfddidfgd
d Z	dS )TestDeprecatedIndexersr   r%   c                 C   sJ   t ddg}tjtdd |j|  W d    d S 1 sw   Y  d S Nr%   r)   as an indexer is not supportedr   r	   r   r   rp   r:   selfr   r1   r!   r!   r"   $test_getitem_dict_and_set_deprecated     "z;TestDeprecatedIndexers.test_getitem_dict_and_set_deprecatedr)   c                 C   sX   t ddgtddgd}tjtdd |j|  W d    d S 1 s%w   Y  d S Nr%   r)   rF   )r(   rN   r   r   r   r	   r   from_tuplesr   r   rp   r:   r   r!   r!   r"   /test_getitem_dict_and_set_deprecated_multiindex     "zFTestDeprecatedIndexers.test_getitem_dict_and_set_deprecated_multiindexc                 C   sJ   t ddg}tjtdd d|j|< W d    d S 1 sw   Y  d S r   r   r   r!   r!   r"   $test_setitem_dict_and_set_disallowed  r   z;TestDeprecatedIndexers.test_setitem_dict_and_set_disallowedc                 C   sX   t ddgtddgd}tjtdd d|j|< W d    d S 1 s%w   Y  d S r   r   r   r!   r!   r"   /test_setitem_dict_and_set_disallowed_multiindex  r   zFTestDeprecatedIndexers.test_setitem_dict_and_set_disallowed_multiindexN)
__name__
__module____qualname__r   markparametrizer   r   r   r   r!   r!   r!   r"   r     s    
(

(r   )>__doc__datetimer   r`   numpyr   r   Zpandas.errorsr   Zpandasr   r   r   r   r   r	   r
   r   r   r   r   r   Zpandas._testingZ_testingr-   r#   r4   r6   r=   rB   rD   r   r   ry   rI   rK   rT   rW   r\   rb   re   rj   rm   rq   rw   r|   r   r   r   r   r   r   r   r   r   r   r   r   ro   rt   r   r   r!   r!   r!   r"   <module>   sz    8




	



	
		$