o
    gT                     @   s  d Z ddlmZmZmZ ddlZddlZddlmZm	Z	 ddl
m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 ddl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"dd Z#ej$%deddgeedddeedddd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/d0d1 Z0d2d3 Z1d4d5 Z2d6d7 Z3d8d9 Z4ej$%d:d;d<gd=d> Z5dS )?zJ
Series.__getitem__ test classes are organized by the type of key passed.
    )datedatetimetimeN)
conversion	timezones)	is_scalar)	Categorical	DataFrameDatetimeIndexIndexSeries	Timestamp
date_rangeperiod_rangetimedelta_range)IndexingError)BDayc                   @   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
ejdddgdd Zejdddgdd Zdd Zdd Zdd  Zd!S )"TestSeriesGetitemScalarsc                 C   sn   t g dg ddd}|d }|dksJ t ddgddgdd}t g dg ddd}|d }t|| d S )	N)   r      r   )   r   )        g?皙?foo)indexnamer   r   r   )r   r   r   )r   tmassert_series_equalselfserresultexpected r%   g/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/series/indexing/test_getitem.py$test_getitem_float_keys_tuple_values'   s   z=TestSeriesGetitemScalars.test_getitem_float_keys_tuple_valuesc                 C   sB   t ddgtdtdgd}|jd }|| }|dksJ d S )Nr   r   Oi8r   )r   npdtyper   )r!   r"   keyr#   r%   r%   r&    test_getitem_unrecognized_scalar6   s    
z9TestSeriesGetitemScalars.test_getitem_unrecognized_scalarc                 C   s\   t tddtddd}d}tjt|d |d  W d    d S 1 s'w   Y  d S )N   
   r*   z2index -11 is out of bounds for axis 0 with size 10matchi)r   r   rands_arraypytestraises
IndexError)r!   r"   msgr%   r%   r&   #test_getitem_negative_out_of_boundsA   s
   
"z<TestSeriesGetitemScalars.test_getitem_negative_out_of_boundsc                 C   sD   d}t jt|d |t|  W d    d S 1 sw   Y  d S )Nz3index \d+ is out of bounds for axis 0 with size \d+r1   )r4   r5   r6   lenr!   datetime_seriesr7   r%   r%   r&   %test_getitem_out_of_bounds_indexerrorH   s   "z>TestSeriesGetitemScalars.test_getitem_out_of_bounds_indexerrorc                 C   sH   t g td}tjtdd |d  W d    d S 1 sw   Y  d S )Nr,   z-1r1   r   objectr4   r5   KeyErrorr!   r"   r%   r%   r&   4test_getitem_out_of_bounds_empty_rangeindex_keyerrorN   s   
"zMTestSeriesGetitemScalars.test_getitem_out_of_bounds_empty_rangeindex_keyerrorc                 C   s  t tjdg dd}tjtdd |d  W d    n1 s"w   Y  tjtdd |d  W d    n1 s=w   Y  t tjdg d	d}tjtdd |d  W d    n1 sdw   Y  tjtdd |d  W d    d S 1 sw   Y  d S )
N   )r   r   r   r   r   r   r*   z^5$r1   r/   z^'c'$c)r   r   r   r   r   r   )r   r+   randomrandnr4   r5   rA   rB   r%   r%   r&   %test_getitem_keyerror_with_int64indexU   s   



"z>TestSeriesGetitemScalars.test_getitem_keyerror_with_int64indexc                 C   s"   t d}|| |d ksJ d S Nr/   )r+   int64)r!   r;   idxr%   r%   r&   test_getitem_int64g   s   
z+TestSeriesGetitemScalars.test_getitem_int64c                 C   s8   t tdttdd}|ttd }t|| d S )Nr/   r*   r   rangelistr   r   r!   r"   r#   r%   r%   r&   test_getitem_regressionl   s   z0TestSeriesGetitemScalars.test_getitem_regressiontzstrzEurope/Berlinzdateutil/Europe/Berlinc                 C   sh   t |}tddd|d}t||jd}td|d}tdd	d
dd}t||}|| || ks2J d S )Nz2012-12-24 16:00z2012-12-24 18:00H)startendfreqtz)r   dataz2012-12-24 17:00)rW   i           r   )	r   maybe_get_tzr   r   hourr   r   r   localize_pydatetime)r!   rR   rW   r   tstime_pandasdttime_datetimer%   r%   r&   test_getitem_pydatetime_tzt   s   
z3TestSeriesGetitemScalars.test_getitem_pydatetime_tzrW   z
US/Easternzdateutil/US/Easternc                 C   sB   t dd|d}ttjt||d}|d }t||d  d S )N1/1/2000r0   periodsrW   r*   1/3/2000r   )r   r   r+   rF   rG   r9   r   assert_almost_equal)r!   rW   rngr"   r#   r%   r%   r&    test_string_index_alias_tz_aware   s   z9TestSeriesGetitemScalars.test_string_index_alias_tz_awarec                 C   sn   t dddd}ttjt||d}|jdk|jdk@ }|tdd }|| }|j	
d |_	t|| d S )Nrd   z1/5/20005minrV   r*   	      )r   r   r+   rF   rG   r9   r]   minuter   r   
_with_freqr   r   )r!   ri   r_   maskr#   r$   r%   r%   r&   test_getitem_time_object   s   z1TestSeriesGetitemScalars.test_getitem_time_objectc                 C   sJ   t tdtdg}tddg|d}|jd }||d  }||ks#J d S )Nz
12-31-1999z
12-31-2000r   r   r*   r   )r   r   r   iloc)r!   catsr"   r$   r#   r%   r%   r&   %test_getitem_scalar_categorical_index   s
   
z>TestSeriesGetitemScalars.test_getitem_scalar_categorical_indexc                 C   s   t dddd}ttt||d}d}||}|dksJ || }||jd ks,J d}tjt	|d	 |d
 W d    n1 sEw   Y  tjt	|d	 |d
  W d    d S 1 saw   Y  d S )N1 day 10:11:12h  rV   rf   r*   z6 days, 23:11:12   z!^Timedelta\('50 days 00:00:00'\)$r1   z50 days)
r   r   r+   aranger9   get_locrs   r4   r5   rA   )r!   ri   r"   r-   indexerr#   r7   r%   r%   r&   $test_getitem_str_with_timedeltaindex   s   

"z=TestSeriesGetitemScalars.test_getitem_str_with_timedeltaindexN)__name__
__module____qualname__r'   r.   r8   r<   rC   rH   rL   rQ   r4   markparametrizerc   rj   rr   ru   r~   r%   r%   r%   r&   r   &   s     

	r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
ddd Zej	deeddddg dgeedddddggeeddddg gededddg dgededdddgggdd Zdd Zdd Zdd ZdS )TestSeriesGetitemSlicesc                 C   sB   t dd}| }|d }t ddd}t||d}t|| d S )Nz1/1/2008z1/1/20092008z
2008-01-01z
2008-12-31)rT   rU   r*   )r   	to_seriesr   r   r   )r!   arrr"   r#   ri   r$   r%   r%   r&   1test_getitem_partial_str_slice_with_datetimeindex   s   
zITestSeriesGetitemSlices.test_getitem_partial_str_slice_with_datetimeindexc                 C   sp   t g d}ttjt||d}|dd  }|dd  }t|| |dd }|dd }t|| d S )N)rd   1/2/2000r   rg   z1/4/2000r*   r   r   rg      )r
   r   r+   rF   rG   r9   r   r   )r!   rK   r_   r#   r$   r%   r%   r&   -test_getitem_slice_strings_with_datetimeindex   s   zETestSeriesGetitemSlices.test_getitem_slice_strings_with_datetimeindexc                 C   s   t dddd}ttt||d}|dd }|jdd	 }t|| |dd  }|jdd  }t|| |d d }|jd d	 }t|| d S )
Nrv   rw   rx   ry   r*   z5 dayz6 dayV      r   r   r+   r{   r9   rs   r   r   r!   ri   r"   r#   r$   r%   r%   r&   2test_getitem_partial_str_slice_with_timedeltaindex   s   zJTestSeriesGetitemSlices.test_getitem_partial_str_slice_with_timedeltaindexc                 C   s   t dddd}ttt||d}|dd  }|jdd  }t|| |dd  }|jdd  }t|| |d	 }||jd
 ksEJ d S )Nrv   us  ry   r*   r   z1 day 10:11:12.001i  z1 days, 10:11:12.001001i  r   r   r%   r%   r&   <test_getitem_partial_str_slice_high_reso_with_timedeltaindex   s   zTTestSeriesGetitemSlices.test_getitem_partial_str_slice_high_reso_with_timedeltaindexc                 C   sf   t jt| d |d d tjf }W d    n1 sw   Y  |jd d tjf }t || d S )N)check_stacklevel)r   assert_produces_warningFutureWarningr+   newaxisvaluesrh   )r!   r;   using_array_managerr#   r$   r%   r%   r&   test_getitem_slice_2d   s   z-TestSeriesGetitemSlices.test_getitem_slice_2dz&ignore:Using a non-tuple:FutureWarningc                 C   s~   t dddd}ttjd|d}tddd g}tt || }W d    n1 s,w   Y  ||d	  }t	|| d S )
N20090415200905192Brl      r*   rD      r   )
r   r   r+   rF   rG   slicer   r   r   r   )r!   r   sr}   r#   r$   r%   r%   r&   test_getitem_median_slice_bug   s   
z5TestSeriesGetitemSlices.test_getitem_median_slice_bugzslc, positionsi  r   Nr   r   r   i  r   i  r   c                 C   s8   t g dtg d}|| }||}t|| d S )Nr   )z
2019-01-01z2019-01-01T06:00:00z
2019-01-02)r   r
   taker   r   )r!   slc	positionsr"   r#   r$   r%   r%   r&   test_getitem_slice_date  s   

z/TestSeriesGetitemSlices.test_getitem_slice_datec                 C   s   d}t jt|jddd |dd  W d    n1 sw   Y  t jt|jddd |dd  W d    d S 1 s@w   Y  d S )	NzUcannot do slice indexing on DatetimeIndex with these indexers \[{key}\] of type floatz4\.0)r-   r1         @g      $@z4\.5g      @)r4   r5   	TypeErrorformatr:   r%   r%   r&   test_getitem_slice_float_raises  s   "z7TestSeriesGetitemSlices.test_getitem_slice_float_raisesc                 C   st   t tdttdd}|dd  }t|| |dd  }t||dd   |d d }t||d d  d S )Nr0   r*   iir   r   rM   rP   r%   r%   r&   test_getitem_slice_bug&  s   z.TestSeriesGetitemSlices.test_getitem_slice_bugc                 C   sN   t tjdg dd}|d d }t |jd d g dd}t|| d S )N   )r   r   rD   r   r0   rY         r*   r   )r   r   rD   r   )r   r+   rF   rG   r   r   r   r    r%   r%   r&   test_getitem_slice_integers1  s   z3TestSeriesGetitemSlices.test_getitem_slice_integers)r   r   r   r   r   r   r   r   r4   r   filterwarningsr   r   r   r   r   r   r   r   r%   r%   r%   r&   r      s*    




r   c                   @   s   e Zd Zejdeeje	e
gdd Zdd Zejdeeje	gdd Zejdeeje	gejdejejejgd	d
 Zdd ZdS )TestSeriesGetitemListLikeboxc                 C   sb   t ddg}t dgtd}||}d}tjt|d ||  W d    d S 1 s*w   Y  d S )NABCr=   zANone of \[Index\(\['C'\], dtype='object'\)\] are in the \[index\]r1   r?   )r!   r   r"   r-   r7   r%   r%   r&   test_getitem_no_matches:  s   
"z1TestSeriesGetitemListLike.test_getitem_no_matchesc                 C   sf   t tdddd}|ddg }t tjdddtjd	ddgddgd
d}t|| |jd
ks1J d S )Nz
2000-01-01r0   D)rf   rV   r   r   
2000-01-03rl   z
2000-01-05z	Period[D]r   r,   )r   r   pdPeriodr   r   r,   )r!   r"   r#   expr%   r%   r&   *test_getitem_intlist_intindex_periodvaluesF  s   zDTestSeriesGetitemListLike.test_getitem_intlist_intindex_periodvaluesc                 C   sb   t dddd }tj|}ttt||d}|jd d }|dg}|| }t	
|| d S )Nr   r   rf   r*   r   r   )r   rp   r   IntervalIndexfrom_breaksr   rN   r9   rs   r   r   )r!   r   dtiiir"   r$   r-   r#   r%   r%   r&   *test_getitem_intlist_intervalindex_non_intR  s   
zDTestSeriesGetitemListLike.test_getitem_intlist_intervalindex_non_intr,   c                 C   s   t td|}tddd}tj||g}ttt|d d d |d}|dg}t	j
tdd	 ||  W d    d S 1 sBw   Y  d S )
Nr   r   r   r   r>   r*   r/   5r1   )r   rN   astyper   r   
MultiIndexfrom_productr   r9   r4   r5   rA   )r!   r,   r   rK   r   mir"   r-   r%   r%   r&   -test_getitem_intlist_multiindex_numeric_level^  s   

"zGTestSeriesGetitemListLike.test_getitem_intlist_multiindex_numeric_levelc                 C   s   t g d}tjdg|d}tjtdd ||  W d    n1 s$w   Y  tjtdd |j|  W d    d S 1 sAw   Y  d S )Nr   r   r   r   r=   4r1   )r   r+   arrayr4   r5   rA   loc)r!   
uint_dtyper"   r-   r%   r%   r&   test_getitem_uint_array_keyk  s   
"z5TestSeriesGetitemListLike.test_getitem_uint_array_keyN)r   r   r   r4   r   r   rO   r+   r   r   r   r   r   r   rJ   float64uint64r   r   r%   r%   r%   r&   r   9  s    

r   c                   @   sD   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S )TestGetitemBooleanMaskc                 C   sH   |}||  k}|t| }|| }t|| t|j|j|  d S )N)medianrO   r   r   assert_index_equalr   )r!   string_seriesr"   rq   r#   r$   r%   r%   r&   test_getitem_booleanw  s   z+TestGetitemBooleanMask.test_getitem_booleanc                 C   s  t g tjd}d|j_||  }|jjdksJ |jtjks!J t ddg}t ttg ddd}|t g td }t	
|| d}tjt|d |t g td  W d    n1 s[w   Y  tjt|d |t d	gtd  W d    d S 1 s|w   Y  d S )
Nr=   
index_namer   r   rJ   )r,   r   sUnalignable boolean Series provided as indexer \(index of the boolean Series and of the indexed object do not matchr1   T)r   r+   rJ   r   r   isnar,   r@   r   r   r   r4   r5   r   bool)r!   r"   r$   r#   r7   r%   r%   r&   test_getitem_boolean_empty  s"   "z1TestGetitemBooleanMask.test_getitem_boolean_emptyc           
      C   s   |}||  k}|t}|| }|| }t|| | }| }d||< d||< t|| tj|dd< d}	tj	t
|	d ||  W d    n1 sPw   Y  tj	t
|	d d||< W d    d S 1 slw   Y  d S )Nr/   r0   z=Cannot mask with non-boolean array containing NA / NaN valuesr1   )r   r   r@   r   r   copyr+   nanr4   r5   
ValueError)
r!   r   r"   rq   omaskr#   r$   s2copr7   r%   r%   r&   test_getitem_boolean_object  s&   


"z2TestGetitemBooleanMask.test_getitem_boolean_objectc                 C   sh   t dddd}tg d}t|j}|| }|jjjd u s J ttd}|| }|jjd u s2J d S )Nz
2016-01-01r   z
US/Pacificre   )TTFF)r   r+   r   r   _data_valuesbaserN   )r!   r   r-   r"   resser2res2r%   r%   r&    test_getitem_boolean_dt64_copies  s   
z7TestGetitemBooleanMask.test_getitem_boolean_dt64_copiesc                 C   s   |}|j dt d| k}d}tjt|d ||  W d    n1 s&w   Y  tjt|d |j|  W d    d S 1 sCw   Y  d S )Nr   rl   r   r1   )shiftr   r   r4   r5   r   r   )r!   r;   r_   mask_shiftedr7   r%   r%   r&   test_getitem_boolean_corner  s   
"z2TestGetitemBooleanMask.test_getitem_boolean_cornerc                 C   s0   |  }||dk }||dk }t|| d S )Nr   )sort_valuesr   r   )r!   r   orderedselr   r%   r%   r&   $test_getitem_boolean_different_order  s   z;TestGetitemBooleanMask.test_getitem_boolean_different_orderc                 C   s~   t dddd}tjt|td}d|dd< || }|dd }|j|jks(J t|| d|d	< || }|jd u s=J d S )
Nrd   z3/1/2000r   rl   r=   Tr0         )r   r+   zerosr9   r   rV   r   r   )r!   ri   rq   maskedr$   r%   r%   r&   -test_getitem_boolean_contiguous_preserve_freq  s   zDTestGetitemBooleanMask.test_getitem_boolean_contiguous_preserve_freqN)
r   r   r   r   r   r   r   r   r   r   r%   r%   r%   r&   r   v  s    
r   c                   @   s   e Zd Zdd ZdS )TestGetitemCallablec                 C   s~   t dtdd}|dd  }||jd ksJ |dd  }|jddg }t|| |d	d  }|jg d
 }t|| d S )Nr   ABCDr*   c                 S   s   dS )Nr   r%   xr%   r%   r&   <lambda>  s    z;TestGetitemCallable.test_getitem_callable.<locals>.<lambda>r   c                 S   s   ddgS )Nr   r   r%   r   r%   r%   r&   r         r   c                 S   s   g dS )N)TFTTr%   r   r%   r%   r&   r     r   )r   r   r   )r   rO   r   r   r   rs   r    r%   r%   r&   test_getitem_callable  s   z)TestGetitemCallable.test_getitem_callableN)r   r   r   r   r%   r%   r%   r&   r     s    r   c                 C   sN   dd | D }| | }| t | dk }| | dk }t|| t|| d S )Nc                 s   s    | ]}|d kV  qdS )r   Nr%   ).0r   r%   r%   r&   	<genexpr>  s    z)test_getitem_generator.<locals>.<genexpr>r   )iterr   r   )r   genr#   result2r$   r%   r%   r&   test_getitem_generator  s   r  seriesr   z
2012-01-01r   r   CETre   c                 C   sh   t jtd| d | d d d f }W d    n1 sw   Y  t| d d d f }t || d S )Nz&Support for multi-dimensional indexing)r2   r   )r   r   r   r+   asarrayassert_numpy_array_equal)r  r   r#   r$   r%   r%   r&   test_getitem_ndim_deprecated  s   	r  c                 C   sT   | }|d }d}t jt|d |dddf  W d    d S 1 s#w   Y  d S )Nr   z\(2000, slice\(3, 4, None\)\)r1   r   r   r   )r4   r5   r   )/multiindex_year_month_day_dataframe_random_datadfr"   r7   r%   r%   r&   4test_getitem_multilevel_scalar_slice_not_implemented  s   "r  c                  C   sh   t td} td| d}t| | d}d}tjt|d ||dk  W d    d S 1 s-w   Y  d S )Nr0   r*   zWIndexing a Series with DataFrame is not supported, use the appropriate DataFrame columnr1   r/   )rO   rN   r   r	   r4   r5   r   )ri   r"   r
  r7   r%   r%   r&   test_getitem_dataframe_raises#  s   "r  c                  C   sF   t td} tg d}t g d| |< t g d}t| | d S )Nr0   )r   r   rm   )r0      rY   )
r   r   r0   r   r  r/   rD   r   r   rY   )r   rN   r+   r   r   r   )r"   rK   r$   r%   r%   r&   'test_getitem_assignment_series_aligment/  s
   r  c                  C   s   t g dg dd} tjtdd | d   W d    n1 s w   Y  tjtdd | jd  W d    n1 s=w   Y  tjtdd | jjd  W d    d S 1 s\w   Y  d S )N)r   r/   rD   r   )g       @r   r   g      @r*   Noner1   )r   r4   r5   rA   r   r|   _enginer"   r%   r%   r&   9test_getitem_duplicate_index_mistyped_key_raises_keyerror9  s   
"r  c                  C   s:   t td} tdf}| | }| |d  }t|| d S )Nr/   r   r   )r   rN   r   r   r   )r"   r-   r#   r$   r%   r%   r&   ,test_getitem_1tuple_slice_without_multiindexF  s
   
r  c                 C   sX   | | dk }|j | j ksJ | g d }|j | j ksJ | dd }|j | j ks*J d S )Nr   )r   r   r   r/   r0   )r   )r;   r#   r%   r%   r&   test_getitem_preserve_nameO  s   r  c                  C   s   t tjdttdddd} g d}tg d}tjt	dd | |  W d    n1 s1w   Y  tjt	dd | |  W d    d S 1 sMw   Y  d S )	Nr0   r   r   r   r*   )r   r   r/   r   r   znot in indexr1   )
r   r+   rF   rG   rO   rN   r   r4   r5   rA   )r"   indsarr_indsr%   r%   r&    test_getitem_with_integer_labelsZ  s    

"r  c                 C   sP   | j d t  }d}tjt|d | |  W d    d S 1 s!w   Y  d S )Nr   z,Timestamp\('1999-12-31 00:00:00', freq='B'\)r1   )r   r   r4   r5   rA   )r;   dr7   r%   r%   r&   test_getitem_missingf  s
   
"r  c                 C   st   | g d }|g d }| j d |j d ksJ |j d |j d ks$J | d |d ks.J |d |d ks8J d S )Nr   r   r   r*   )r   object_seriesslice1slice2r%   r%   r&   test_getitem_fancyn  s   r  c                 C   s   | d }t |tjsJ d S rI   )
isinstancer+   r   )r;   valuer%   r%   r&   test_getitem_box_float64w  s   r   c                  C   s8   t tdg dd} t| d sJ | d dksJ d S )Nr/   )rE   ar!  br"  r*   rE   r   )r   rN   r   )objr%   r%   r&   test_getitem_unordered_dup|  s   r$  c                  C   sH   t tdg dtjd} t ddgddgtjd}| d }t|| d S )Nr/   )r   r   r   r   r   r   r   r   r   )r   rN   r+   rJ   r   r   )r"   r$   r#   r%   r%   r&   test_getitem_dups  s   r%  c                  C   s   t tdtg dd} | d }| jddg }t|| tt | j	| d}W d    n1 s4w   Y  t|| d S )Nr/   )r!  r"  rE   r!  r"  r*   r!  r   r   )
r   rN   r   rs   r   r   r   r   r   	get_value)r"   r#   r$   r%   r%   r&   test_getitem_categorical_str  s   r'  c                  C   s"   t dg dd} | d d d  d S )Nr   )r!  r!  r"  r"  rE   r*   r>   )r   r  r%   r%   r&   +test_slice_can_reorder_not_uniquely_indexed  s   r(  
index_valsaabcdaadcbc                 C   s,   t tdt| d}|d }|dksJ d S )Nr/   r*   r   )r   rN   rO   )r)  r   r#   r%   r%   r&   0test_duplicated_index_getitem_positional_indexer  s   r,  )6__doc__r   r   r   numpyr+   r4   pandas._libs.tslibsr   r   pandas.core.dtypes.commonr   pandasr   r   r	   r
   r   r   r   r   r   r   pandas._testing_testingr   pandas.core.indexingr   pandas.tseries.offsetsr   r   r   r   r   r   r  r   r   r  r  r  r  r  r  r  r  r  r  r   r$  r%  r'  r(  r,  r%   r%   r%   r&   <module>   sV    ,  =t	


		