o
    թZh'A                  
   @   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(   a/var/www/html/lang_env/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   sx   t tjdd}|d }t|| t| d|d< W d    n1 s)w   Y  | s8|dk s:J d S d S )Nr   r:   .r   )	r
   r   r   r   r   r"   r3   assert_cow_warningall)using_copy_on_writewarn_copy_on_writer&   r7   r(   r(   r)   test_getitem_setitem_ellipsish   s   
rL   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_indicest   s   

rQ   c                  C   sF   t g dg d} | jd | d ksJ d| jd< t| d d d S )NrO   rE   r   r   r   )r
   rF   r"   Zassert_almost_equalr&   r(   r(   r)   test_getitem_setitem_integers   s   
rS   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    r[   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   rU   r   r,   r   r/   rV   )r   r
   rW   r   rX   rY   r?   rF   )rZ   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   "rc   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/   rV   )foobarrd   bahz['bam'] not in indexr   )rd   re   rf   Zbam)r
   r   r    r%   reescapera   r(   r(   r)   test_getitem_dups_with_missing   s   "ri   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   )rb   r&   s2r8   r(   r(   r)   test_setitem_ambiguous_keyerror   s
   rl   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   rq   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   rt   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*   "rx   c           	      C   s4  |   }| 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|t| dd   | dd }t| d|d d < W d    n1 s}w   Y  |rt| | d S | dd dk	 sJ d S )Nr:   r_   i	   r   r,      )
rj   r   rr   r"   Zassert_numpy_array_equalr   arrayrH   r3   rI   )	Zstring_seriesZobject_seriesrJ   rK   originalZnumSliceZnumSliceEndZobjSlicers   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,   rT   z1 daysr   r   A)r
   objectr   r?   r"   r3   r   r>   r   insertr   ro   )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>tjtdd |d
 | W d    n1 scw   Y  t g dg dg dg dd}|jg ddd}|d u sJ t	|| d S )Nc                 S   s   i | ]}|g d qS )rO   r(   ).0r   r(   r(   r)   
<dictcomp>  s    z3test_underlying_data_conversion.<locals>.<dictcomp>rE   T)Zinplacer,   )r   r   r   r   r   valzinplace methodr   rO   )r   r,   r   )r   r   r   r   )
r   Z	set_indexr
   rj   r"   Zraises_chained_assignment_errorupdater#   r$   assert_frame_equal)rJ   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   ro   rp   )r@   seqr(   r(   r)   test_preserve_refs6  s   r   c                 C   sD   | }t tjdt||dd}||d }|j|jks J d S )Nr   Zsth)r   namerd   )r
   r   r   r   r   rr   r   )Z%lexsorted_two_level_string_multiindexrb   r   r6   r7   r(   r(   r)   test_multilevel_preserve_name<  s   r   r   z
2014-01-01r_   ZMSr]   z2014-01M0r\   c              
   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 )Nry      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_stepI  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
   rR   r(   r(   r)   test_tuple_indexa  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_indexj  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   rn      d   )r
   rj   r?   r"   r3   )r6   r8   rhsr(   r(   r)   "test_loc_setitem_all_false_indexert  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_index}  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   rj   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    rw   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   rN   )r/   rV   r   r   r   r
   r   from_tuplesr   r    rw   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
e	dd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   )rg   rh   rj   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,   TFFNr   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   sH   t g d|d}t|r|turt|sd }nt}| |||| d S )NrO   r-   )r
   r   r	   r   Zisnatr$   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_float)r   r   r   r   r	   r   Z
datetime64Ztimedelta64Z_invalid_scalarsrv   Z	_indexersr   r   r   r   Zfloat64r   r   r   r(   r(   r(   r)   r     s,    "	r   )A__doc__datetimer   rg   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   rL   r   r   r   rQ   rS   r[   r^   rc   ri   rl   rq   rt   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   rv   r{   r   r   r   r(   r(   r(   r)   <module>   s|    @



	



	
		$