o
    7?e?                  
   @   sp  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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 Z0d4d5 Z1d6d7 Z2ej!"d8ed9d:d;d<ed=d:d>d<ed?d:d@d<gdAdB Z3dCdD Z4dEdF Z5dGdH Z6dIdJ Z7dKdL Z8dMdN Z9dOdP Z:dQdR Z;ej!"dSi dTdUigej!"dVg dWdWge<ddXe=g gdYdZ Z>G d[d\ d\Z?G d]d^ d^Z@dS )_z test get/set & misc     )	timedeltaN)IndexingError)NA	DataFrameIndex
IndexSlice
MultiIndexNaTSeries	Timedelta	Timestampconcat
date_rangeisnaperiod_rangetimedelta_rangec               	   C   s  t tjddg dd} d}d}tjt|d# tj	t
|d | d  W d    n1 s1w   Y  W d    n1 s@w   Y  tjt|d# tj	t
|d d| d< W d    n1 scw   Y  W d    n1 srw   Y  tjtd	d | d
  W d    n1 sw   Y  |  } tjt|d# tj	t
|d | d  W d    n1 sw   Y  W d    n1 sw   Y  d}tjt|d, tj	t
|d d| d< W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )N      )abr   r   r   indexz>Series.__[sg]etitem__ treating keys as positions is deprecatedz/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default_rngstandard_normalpytestraises
IndexErrortmassert_produces_warningFutureWarningKeyErrorZ
sort_index)sZwarn_msgmsg r(   k/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/pandas/tests/series/indexing/test_indexing.pytest_basic_indexing   sF   




$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   r   TZcheck_exactr   r
   ranger"   assert_series_equal)any_numeric_dtyper.   idxserresultexpectedr(   r(   r)   6test_getitem_numeric_should_not_fallback_to_positional9   s   r9   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,   )r:   r,   r:   Tr0   r1   )r4   r.   r5   r6   r8   r(   r(   r)   6test_setitem_numeric_should_not_fallback_to_positionalC   s   r;   c                 C   sf   | j g d }| | }| |}t|| | |d |d  }| j|d |d  }t|| d S )Nr   r:      r   r   )r   reindexr"   r3   loc)datetime_seriesindicesr7   r8   r(   r(   r)   test_basic_getitem_with_labelsM   s   
rB   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   )rD   r   r   )r
   r   r   r?   iloc)r6   r8   r7   r(   r(   r)    test_basic_getitem_dt64tz_valuesY   s   

rG   c                  C   sF   t tjdd} | d }t||  d| d< |dk s!J d S )Nr   r:   .r   )r
   r   r   r   r   r"   r3   all)r&   r7   r(   r(   r)   test_getitem_setitem_ellipsish   s
   rI   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"   r3   )Zresult_1Zduplicate_itemZ
expected_1r7   r8   r(   r(   r)   $test_getitem_with_duplicates_indicesr   s   

rN   c                  C   sF   t g dg d} | jd | d ksJ d| jd< t| d d d S )NrL   rE   r   r   r   )r
   rF   r"   Zassert_almost_equalr&   r(   r(   r)   test_getitem_setitem_integers   s   
rP   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
}d}tj	t
|d t|d tsUJ W d    n1 s_w   Y  t|j| d  tspJ t|jd tszJ t|j| d  tsJ t|jd	 tsJ d S )NZ20090415Z20090519B)freqr   r,   r   r/      r   z;Series.__getitem__ treating keys as positions is deprecatedr   )r   r
   
isinstancer   atiatr?   rF   r"   r#   r$   )rngr6   r'   r(   r(   r)   test_series_box_timestamp   s    rX   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rC   rR   r   r,   r   r/   rS   )r   r
   rT   r   rU   rV   r?   rF   )rW   r6   r(   r(   r)   test_series_box_timedelta   s   r[   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 )	Nr:   r      r   r   z^1$r   r,   )r
   r2   listr   r    r%   
indexer_slr6   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/   rS   )foobarra   bahz['bam'] not in indexr   )ra   rb   rc   Zbam)r
   r   r    r%   reescaper^   r(   r(   r)   test_getitem_dups_with_missing   s   "rf   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 )Nr:   r   r\   r   r   r   r,   )r
   r2   r]   copyr   r"   r3   )r_   r&   s2r8   r(   r(   r)   test_setitem_ambiguous_keyerror   s
   ri   c                 C   sz   t j| | jd < t j| jg d< t j| jd< t | jd s J t | jd s*J d| t | < t | jd r;J d S )Nr   )r,   r         r   )r   nanr   rF   isnan)r@   r(   r(   r)   test_setitem   s   rn   c                 C   s6   | dd }t |t |jksJ |jjdu sJ d S )Nr   r\   T)lenr   Z	is_unique)r@   slr(   r(   r)   test_setslice   s   rq   c                 C   sp  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d d gg  W d    n1 sw   Y  t jt|d d| dd d g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"   r3   	TypeError)r@   r'   r7   r8   r(   r(   r)   !test_basic_getitem_setitem_corner   s*   "ru   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 )Nr:   r\   i	   r   r,      )	rg   r   ro   r"   ZequalContentsr   arrayr3   rH   )Zstring_seriesZobject_seriesusing_copy_on_writeoriginalZnumSliceZnumSliceEndZobjSlicerp   r(   r(   r)   
test_slice   s    r{   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,   rQ   z1 daysr   r   A)r
   objectr   r?   r"   r3   r   r>   r   insertr   rl   )r&   r8   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
< | }| | rJt  |d
 | W d    n1 sBw   Y  |}n'|d
 | t g dg dg dg dd}|jg ddd}|d u sqJ t|| d S )Nc                 S   s   i | ]}|g d qS )rL   r(   ).0r   r(   r(   r)   
<dictcomp>  s    z3test_underlying_data_conversion.<locals>.<dictcomp>rE   T)Zinplacer,   )r   r   r   r   r   valrL   )r   r,   r   )r   r   r   r   )r   Z	set_indexr
   rg   r"   Zraises_chained_assignment_errorupdateassert_frame_equal)ry   dfreturn_valuer&   Zdf_originalr8   r(   r(   r)   test_underlying_data_conversion  s&   
r   c                 C   s2   | j g d }tj|j d< t| j d rJ d S )Nr<   r,   r:   )rF   r   rl   rm   )r@   seqr(   r(   r)   test_preserve_refs2  s   r   c                 C   sD   | }t tjdt||dd}||d }|j|jks J d S )Nr   Zsth)r   namera   )r
   r   r   r   r   ro   r   )Z%lexsorted_two_level_string_multiindexr_   r   r6   r7   r(   r(   r)   test_multilevel_preserve_name8  s   r   r   z
2014-01-01r\   ZMSrZ   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 )Nrv      r\      r   )strr
   r   Zaranger   r"   Z!assert_indexing_slices_equivalent)r   Zkeystr1Zkeystr2r6   ZSLCkeykey2r(   r(   r)   test_slice_with_negative_stepE  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
   rO   r(   r(   r)   test_tuple_index]  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_indexf  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   rk      d   )r
   rg   r?   r"   r3   )r6   r8   rhsr(   r(   r)   "test_loc_setitem_all_false_indexerp  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-   int64)r
   r?   r   r"   r3   r6   r7   r8   r(   r(   r)   +test_loc_boolean_indexer_non_matching_indexy  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?   )r6   indexerr(   r(   r)   ,test_loc_boolean_indexer_miss_matching_index  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"   r3   )r   r6   r8   r(   r(   r)   (test_loc_setitem_nested_data_enlargement  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"   r3   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?   )r6   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         ?)r   rg   r?   r"   r   )r   r   r   r8   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    rt   r?   selfr   r6   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   rK   )r/   rS   r   r   r   r
   r   from_tuplesr   r    rt   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   c                
   @   s   e Zd Zdd ZddddeededgZddge	dd	g d
gZ
ejded	ded	ed	g ejde
dd Zejdeddedg ejde
dd Zejdedg ejde
dd ZdS )TestSetitemValidationc                 C   s  d}t |}| }tj||d |||< | }W d    n1 s%w   Y  tj||d ||j|< | }W d    n1 sEw   Y  tj||d ||j|< | }W d    n1 sew   Y  tj||d ||d d < W d    d S 1 sw   Y  d S )Nz3Setting an item of incompatible dtype is deprecatedr   )rd   re   rg   r"   r#   rF   r?   )r   r6   invalidr   warnr'   Zorig_serr(   r(   r)   _check_setitem_invalid  s$   





"z,TestSetitemValidation._check_setitem_invalidy      ?       @True1z1.0r	   r   r,   TFFr   g      ?r   c                 C   s$   t g ddd}| |||t d S )Nr   boolr-   r
   r   r$   )r   r   r   r6   r(   r(   r)   #test_setitem_validation_scalar_bool  s   z9TestSetitemValidation.test_setitem_validation_scalar_boolTr   c                 C   s>   t g d|d}t|r|turd }nt}| |||| d S )NrL   r-   )r
   r   r	   r$   r   )r   r   Zany_int_numpy_dtyper   r6   r   r(   r(   r)   "test_setitem_validation_scalar_int  s
   z8TestSetitemValidation.test_setitem_validation_scalar_intc                 C   s$   t g d|d}| |||t d S )N)r,   r   Nr-   r   )r   r   Zfloat_numpy_dtyper   r6   r(   r(   r)   $test_setitem_validation_scalar_float  s   z:TestSetitemValidation.test_setitem_validation_scalar_floatN)r   r   r   r   r	   r   Z
datetime64Ztimedelta64Z_invalid_scalarsrs   Z	_indexersr   r   r   r   Zfloat64r   r   r   r(   r(   r(   r)   r     s,    	r   )A__doc__datetimer   rd   numpyr   r   Zpandas.errorsr   Zpandasr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Zpandas._testingZ_testingr"   r*   r9   r;   rB   rG   rI   r   r   r}   rN   rP   rX   r[   r`   rf   ri   rn   rq   ru   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   rs   rx   r   r   r   r(   r(   r(   r)   <module>   s|    @




	



	
		$