U
    f/eiq                     @   sl  d dl mZm 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 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G dd dZG dd dZdd Zdd Zdd Z dd Z!G dd dZ"G dd dZ#ej$%d ej&ed!d"d#d$d%d&d'd(d)g	eej'd"ej'd$ej'd&ej'd(ej'g	e(ddd!d*d+ej&ed,d,d-d-geej'd,ej'd-ge)d.e(ddd!d/d+ej&ee*d)eej'ej'ej'ej'ej'd$d%d&d'd(g
e(dd$d0d+ej&ed1d!d"geej'd!d"gd d2d+ej&ed-geej'ge)d.d d3d+ej&ed-d,geej'd,ge)d.d d4d+gG d5d6 d6e#Z+G d7d8 d8e#Z,G d9d: d:e#Z-G d;d< d<e#Z.G d=d> d>e#Z/G d?d@ d@e#Z0ej$%dAed1d!d"geej'd!d"gfedBdCdDgeej'dCdDgfee dEd1d1e dEd1d!e dEd1d"gee
e dEd1d!e dEd1d"gfedFdGdHgeddGdHgfgG dIdJ dJe#Z1dS )K    )datedatetimeN)
CategoricalDatetimeIndexIndex
MultiIndexNaTSeries	Timedelta	Timestamp
date_rangeperiod_range)IndexingError)BDayc                   @   sP   e Zd Zdd Zdd Zdd Zdd Zej	d	d
ddgdd Z
dd ZdS )TestSetitemDT64Valuesc                 C   s   t tddd}d |d< |d tks(td |dd< |d tksDttj|d< |d tks^ttj|dd< |d tks|td S )	Nz1/1/2000
   periods               )r	   r   r   AssertionErrornpnanselfseries r   M/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/series/indexing/test_setitem.pytest_setitem_none_nan   s    
z+TestSetitemDT64Values.test_setitem_none_nanc                 C   s@   t ddg}tddg|d}| }d|jg < t|| d S )N)a   )b   r#   r%   indexr   )r   from_tuplesr	   copyloctmassert_series_equal)r   idxresultexpectedr   r   r    #test_setitem_multiindex_empty_slice*   s
    
z9TestSetitemDT64Values.test_setitem_multiindex_empty_slicec                 C   sN   t dddgdddgd}t |d< |jt ks6t|d t ksJtd S )Nr#   r%   r   Dater$   otherr&   )r	   r   todayr1   r   r   serr   r   r    test_setitem_with_string_index2   s    z4TestSetitemDT64Values.test_setitem_with_string_indexc                 C   sT   t dddd}ddddg}t||d	}| }tj|d< tj|jd
< t|| d S )NZ2017r   
US/Easternr   tz)r   r#   )r   r%   )r   r   )r   r   r&   r   )r   r	   r)   r   r   ilocr+   r,   )r   arrr'   r.   r/   r   r   r    )test_setitem_tuple_with_datetimetz_values9   s    
z?TestSetitemDT64Values.test_setitem_tuple_with_datetimetz_valuesr9   r7   UTCz
Asia/Tokyoc                 C   s   t tddd|d}|jd| dks*tt td|dtd	|dtd
|dg}| }td|d||d< t|| t td|dtd|dgddgd}|jd| dkstt td|dtd	|dtd|dg}| }|||ddg< t|| d S )N
2016-01-01Hr   freqr   r9   datetime64[ns, ]z2016-01-01 00:00r9   2011-01-01 00:00z2016-01-01 02:00
2011-01-01r#   
2012-01-01r%   r&   2012-01-01 00:00r	   r   dtyper   r   r)   r+   r,   )r   r9   indexer_sliorigexpr5   valsr   r   r    test_setitem_with_tzC   s2    


	


z*TestSetitemDT64Values.test_setitem_with_tzc                 C   s  d}t tddd|d}|jd| dks.tt td|d	td
|d	td|d	g}| }td|d	||d< t|| t td|d	td|d	gddgd}|jd| dkstt td|d	td|d	td|d	g}| }|||ddg< t|| d S )Nr7   z
2016-11-06r?   r   r@   rB   rC   z2016-11-06 00:00-04:00rD   z2011-01-01 00:00-05:00z2016-11-06 01:00-05:00rF   r#   rG   r%   r&   z2016-11-06 00:00rE   rH   rI   )r   rK   r9   rL   rM   r5   rN   r   r   r    test_setitem_with_tz_dsth   s4    


	


z.TestSetitemDT64Values.test_setitem_with_tz_dstN)__name__
__module____qualname__r!   r0   r6   r<   pytestmarkparametrizerO   rP   r   r   r   r    r      s   

$r   c                   @   sd   e Zd Zdd Zejdejej	gejdddgdd Z
ejd	d
dejfgdd ZdS )TestSetitemScalarIndexerc              	   C   sF   t tddtddd}d}tjt|d d|d< W 5 Q R X d S )Nr   r   r&   z2index -11 is out of bounds for axis 0 with size 10matchfooi)r	   r+   Zrands_arrayrT   raises
IndexError)r   r5   msgr   r   r    #test_setitem_negative_out_of_bounds   s    z<TestSetitemScalarIndexer.test_setitem_negative_out_of_boundsindexer	ser_indexr   r#   c                 C   sX   t ddgdd}||}t dg|gd|d< t t dg|gddgdd}t|| d S )Nr   objectrJ   *   r&   r	   r+   r,   )r   r_   r`   r5   Zidxrr/   r   r   r     test_setitem_series_object_dtype   s
    z9TestSetitemScalarIndexer.test_setitem_series_object_dtypezindex, exp_value)r   rc   c                 C   s>   t ddg}t dg|gd|jd< t |dg}t|| d S )Nr   rc   r&   )r	   r*   r+   r,   )r   r'   Z	exp_valuer5   r/   r   r   r    test_setitem_series   s    z,TestSetitemScalarIndexer.test_setitem_seriesN)rQ   rR   rS   r^   rT   rU   rV   r+   r*   atre   r   r   rf   r   r   r   r    rW      s   rW   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSetitemSlicesc              	   C   sd   d}t jt|jddd d|dd< W 5 Q R X t jt|jddd d|d	d< W 5 Q R X d S )
NzUcannot do slice indexing on DatetimeIndex with these indexers \[{key}\] of type floatz4\.0)keyrX   r   g      @g      $@z4\.5g      @)rT   r[   	TypeErrorformat)r   datetime_seriesr]   r   r   r    test_setitem_slice_float_raises   s    z1TestSetitemSlices.test_setitem_slice_float_raisesc                 C   sT   t tdttdd}d|dd < |dk s4td|d d< |dk sPtd S )Nr   r&   r   ir   )r	   rangelistallr   r4   r   r   r    test_setitem_slice   s
    z$TestSetitemSlices.test_setitem_slicec              
   C   sd   t tjdddddddddgd	}d
|d d< |d d d
k sHt|dd  d
k r`td S )N   r%   r   r   r            r&   r   )r	   r   randomZrandnrp   r   anyr4   r   r   r    test_setitem_slice_integers   s    $z-TestSetitemSlices.test_setitem_slice_integersc                 C   sJ   t tdttdd}d|d d d< |d d d dk sFtd S )N   r&   r   r%   )r	   r+   ZmakeIntIndexastypefloatrp   r   r   r   r   r    test_setitem_slicestep   s    z(TestSetitemSlices.test_setitem_slicestepc                 C   sl   t ddgtdf}ttjdtjd|}d||d d d< tdddd	dd
ddddg
|}t|| d S )Nr   r#   Zabcder   rb   d   r   r%   r   r   r   r   	   )	r   Zfrom_productro   r	   r   arangeZint64r+   r,   )r   rK   mir.   r/   r   r   r    test_setitem_multiindex_slice   s
    z/TestSetitemSlices.test_setitem_multiindex_sliceN)rQ   rR   rS   rm   rq   rx   r|   r   r   r   r   r    rh      s
   rh   c                   @   sZ   e Zd Zdd Zdd Zdd Zejde	e
jegdd	 Zd
d Zdd Zdd ZdS )TestSetitemBooleanMaskc                 C   s   ||  k}| }|d ||< |d }t|| ||  | }|d dd ||< |d dd |}|| || < t|| ||  d S )Nr%   r   r   )medianr)   r+   r,   Zreindex_like)r   string_seriesmaskr.   r/   r   r   r    test_setitem_boolean   s    z+TestSetitemBooleanMask.test_setitem_booleanc              	   C   sj   |}|j dt d| k}d}tjt|d d||< W 5 Q R X tjt|d d|j|< W 5 Q R X d S )Nr#   rA   zsUnalignable boolean Series provided as indexer \(index of the boolean Series and of the indexed object do not matchrX   )shiftr   r   rT   r[   r   r*   )r   rl   tsZmask_shiftedr]   r   r   r    test_setitem_boolean_corner   s    z2TestSetitemBooleanMask.test_setitem_boolean_cornerc                 C   s@   |  }| }d||dk< | }d||dk< t|| d S Nr   )Zsort_valuesr)   r+   r,   )r   r   Zorderedr)   r/   r   r   r    $test_setitem_boolean_different_order   s    z;TestSetitemBooleanMask.test_setitem_boolean_different_orderfuncc                 C   sF   t d dd g}|dddg}ddg||< t dddg}t|| d S )Nr$   TFr"   crd   )r   r   r5   r   r/   r   r   r     test_setitem_boolean_python_list   s
    z7TestSetitemBooleanMask.test_setitem_boolean_python_listc                 C   s   t ddddg|d}t td|d||dk< t ddddg|d}t|| t ddddg|d}t td|d|j|dk< t|| t ddddg|d}t td|d}|j|d	k |j|dk< t|| d S )
Nr   r   r   rr   rb   r   r%   r   r#   )r	   rn   r+   r,   r*   )r   Zany_nullable_numeric_dtyper5   r/   Zloc_serr   r   r    'test_setitem_boolean_nullable_int_types  s    z>TestSetitemBooleanMask.test_setitem_boolean_nullable_int_typesc                 C   sv   t d gd }dgd dgd  dgd  }td||< |}t d gd ttd d gd  d}t|| d S )Nr   Fr   Tr   r%   ra   )r	   rn   ro   rz   r+   r,   )r   r5   r   r.   r/   r   r   r    Atest_setitem_with_bool_mask_and_values_matching_n_trues_in_length  s    *zXTestSetitemBooleanMask.test_setitem_with_bool_mask_and_values_matching_n_trues_in_lengthc                 C   s<   t dddg}tj|d< t tjddgtd}t|| d S )NTFr   rb   )r	   r   r   ra   r+   r,   )r   r.   r/   r   r   r    test_setitem_nan_with_bool!  s    
z1TestSetitemBooleanMask.test_setitem_nan_with_boolN)rQ   rR   rS   r   r   r   rT   rU   rV   ro   r   arrayr	   r   r   r   r   r   r   r   r    r      s   
	r   c                   @   s   e Zd Zdd Zdd ZdS )TestSetitemViewCopySemanticsc                 C   s   t dddd}|d }t|}|j|k	s,t|jjj|jjjk	sDt|jdksRtt|jd< |jjd kslt|j|k	szt|jjj|jjjk	st|d |kst|jdkstd S )NZ20130101r   r7   r8   r#   D)	r   r	   _valuesr   _databaserA   r   r:   r   Zdtir   r5   r   r   r    ,test_setitem_invalidates_datetime_index_freq*  s    
zITestSetitemViewCopySemantics.test_setitem_invalidates_datetime_index_freqc                 C   s   t dddd}|d }t|}|j|k	s,t|jjj|jjjk	sDt|jjd |k	sXt|jjd jj|jjjk	svtt|d d d< |d tkst|d |kstd S )Nr>   r   z
US/Pacificr8   r   r   )	r   r	   r   r   r   r   Z_mgrZarraysr   r   r   r   r    'test_dt64tz_setitem_does_not_mutate_dti=  s    zDTestSetitemViewCopySemantics.test_dt64tz_setitem_does_not_mutate_dtiN)rQ   rR   rS   r   r   r   r   r   r    r   )  s   r   c                   @   s   e Zd Zdd Zdd ZdS )TestSetitemCallablec                 C   sL   t ddddgtdd}d|dd	 < t ddddgtdd}t|| d S )
Nr#   r%   r   r   ABCDr&   c                 S   s   dS )NAr   xr   r   r    <lambda>P      z?TestSetitemCallable.test_setitem_callable_key.<locals>.<lambda>)r	   ro   r+   r,   r   r5   r/   r   r   r    test_setitem_callable_keyM  s    z-TestSetitemCallable.test_setitem_callable_keyc                 C   sD   dd }t ddddg}|||dk < t dd|dg}t|| d S )Nc                 S   s   | d S )Nr#   r   r   r   r   r    r   W  r   zATestSetitemCallable.test_setitem_callable_other.<locals>.<lambda>r#   r%   r   r   r   rd   )r   incr5   r/   r   r   r    test_setitem_callable_otherU  s
    z/TestSetitemCallable.test_setitem_callable_otherN)rQ   rR   rS   r   r   r   r   r   r    r   L  s   r   c                   @   sd   e Zd Zdd Zdd Zdd Zejde	de	d
 e	d gd	d
 Zdd Zdd ZdS )TestSetitemWithExpansionc                 C   s6   t d}ttd}d||< td|g}t|| d S )NrG   rb   /   )r   r	   ra   r+   r,   )r   ri   r   r/   r   r   r    test_setitem_empty_seriesa  s
    
z2TestSetitemWithExpansion.test_setitem_empty_seriesc                 C   s^   t g tg ddtd}td}d||< t dt|gdd}t|| |jj|jjksZtd S )Nr   r   rb   rG   r   )	r	   r   ra   r   r+   r,   r'   rA   r   )r   r   ri   r/   r   r   r    6test_setitem_empty_series_datetimeindex_preserves_freqi  s    zOTestSetitemWithExpansion.test_setitem_empty_series_datetimeindex_preserves_freqc                 C   sV   t d}t|gdgtd}|d }tg td}d|d< ||d< |d }||ksRtd S )Nl    Pi5 	timestampr'   rJ   rb   g     r@Zanything)r   r	   ra   r   )r   r   r   r/   r.   r   r   r    3test_setitem_empty_series_timestamp_preserves_dtyper  s    zLTestSetitemWithExpansion.test_setitem_empty_series_timestamp_preserves_dtypetd9 daysc                 C   s   t d|gddgtd}t dg}||d< t|| t|d tsFtt dg}td|jd< t|| t|d ts|td S )Nr   r   r   r   r   )r	   ra   r+   r,   
isinstancer
   r   r*   )r   r   r/   r5   r   r   r    #test_append_timedelta_does_not_cast~  s    


z<TestSetitemWithExpansion.test_append_timedelta_does_not_castc                 C   sR   t td}td|d< d|d< d|d< t tdddgdddgd}t|| d S )	Nrb   r>   r"         @r$   rZ   r   r&   )r	   ra   r   r+   r,   r   r   r   r    *test_setitem_with_expansion_type_promotion  s    
zCTestSetitemWithExpansion.test_setitem_with_expansion_type_promotionc                 C   sJ   |  }d|jkstd|d< tdgdgdd}||}t|| d S )NZfoobarr#   r   )r'   name)r)   r'   r   r	   appendr+   r,   )r   r   r5   Zappr/   r   r   r    test_setitem_not_contained  s    
z3TestSetitemWithExpansion.test_setitem_not_containedN)rQ   rR   rS   r   r   r   rT   rU   rV   r
   Zto_timedelta64Zto_pytimedeltar   r   r   r   r   r   r    r   `  s   	


	r   c               
   C   sf   t d} d| j_t| }tt|D ]:}d}tjt	|d d||< W 5 Q R X | | dks&t
q&d S )Nr   F#assignment destination is read-onlyrX   r#   r   )r   zerosflags	writeabler	   rn   lenrT   r[   
ValueErrorr   )r   r   nr]   r   r   r    .test_setitem_scalar_into_readonly_backing_data  s    
r   c               	   C   sT   t d} d| j_t| }d}tjt|d d|dd< W 5 Q R X |  rPt	d S )Nr   Fr   rX   r#   r   )
r   r   r   r   r	   rT   r[   r   rw   r   )r   r   r]   r   r   r    -test_setitem_slice_into_readonly_backing_data  s    
r   c                  C   s@  t tddgddgd} |  }d|d d < t tddgddgd}t|| |  }d|d< t tddgddgd}t|| |  }d||jdk< t tddgddgd}t|| |  }d|ddg< t tddgddgd}t|| |  }dd	g|_d|d	< t tddgddgddd	gd
}t|| d S )Nr$   r"   
categoriesr#   r   FTr   yr&   )r	   r   r)   r+   r,   r'   )rL   r5   rM   r   r   r    &test_setitem_categorical_assigning_ops  s,    
 r   c                  C   sJ   t tdddg} t tdtjdgdddgd}tj| d< t| | d S )Nr#   r%   r   r   )r	   r   r   r   r+   r,   )r5   rM   r   r   r    !test_setitem_nan_into_categorical  s    
r   c                   @   s>   e Zd Zejdddgejjddddgedd	d
 ZdS )TestSetitemCastinguniqueTFvalr   r   3)idsc                 C   s   t ddg}|sddg|_|||d< t|jd t|ks@tt d|gt|jd}|sx|tjk	rxt ||gtddgd}t|| d S )NTFr#   )rJ   r'   )r	   r'   typer:   r   ra   r+   r,   )r   r   rK   r   r5   r/   r   r   r    test_setitem_non_bool_into_bool  s    
z2TestSetitemCasting.test_setitem_non_bool_into_boolN)rQ   rR   rS   rT   rU   rV   r   r   r   r   r   r    r     s   r   c                   @   s^   e Zd ZdZej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S )SetitemCastingEquivalentsz
    Check each of several methods that _should_ be equivalent to `obj[key] = val`

    We assume that
        - obj.index is the default Index(range(len(obj)))
        - the setitem does not expand the obj
    c                 C   s   dS )z\
        Indicate that we are not (yet) checking whether or not setting is inplace.
        Nr   r   r   r   r    
is_inplace  s    z$SetitemCastingEquivalents.is_inplacec           	      C   s>   |}|  }|j}||||< t|| | |||| d S N)r)   r   r+   r,   _check_inplace)	r   objri   r/   r   r_   r   rL   r;   r   r   r    check_indexer  s    z'SetitemCastingEquivalents.check_indexerc                 C   sP   |d kr
nB|r>|j jdkr.|j|jjks<tqL|j|ksLtnt||j d S )N)mM)rJ   kindr   r   r   r+   Zassert_equal)r   r   rL   r;   r   r   r   r    r     s    z(SetitemCastingEquivalents._check_inplacec                 C   s  t |tsd S | |||||| |tjkrD| ||||tj| n |tjkrd| ||||tj| t||d }| |||||| |tjk	rt	||d }| |||||| |g}	| ||	|||| t
|	}
| ||
|||| dd |fD }| |||||| d S )Nr#   c                 s   s   | ]
}|V  qd S r   r   .0r   r   r   r    	<genexpr>>  s     z9SetitemCastingEquivalents.test_int_key.<locals>.<genexpr>)r   intr   r+   r*   rg   r:   Ziatrn   slicer   r   )r   r   ri   r/   r   rK   r   rngZslcilkeyindkeygenkeyr   r   r    test_int_key%  s$    




z&SetitemCastingEquivalents.test_int_keyc           
      C   s   t |tsd S |tjk	r,| |||||| ttt|| }| |||||| t	|}| |||||| dd |D }	| ||	|||| d S )Nc                 s   s   | ]
}|V  qd S r   r   r   r   r   r    r   O  s     z;SetitemCastingEquivalents.test_slice_key.<locals>.<genexpr>)
r   r   r+   r*   r   ro   rn   r   r   r   )
r   r   ri   r/   r   rK   r   r   r   r   r   r   r    test_slice_keyA  s    


z(SetitemCastingEquivalents.test_slice_keyc                 C   s<   t j|jtd}d||< | }||||< t|| d S Nrb   T)r   r   shapeboolr)   r+   r,   )r   r   ri   r/   r   rK   r   r   r   r    test_mask_keyR  s
    z'SetitemCastingEquivalents.test_mask_keyc           
      C   sX   t j|jtd}d||< |}| }|j}|| |}	t|	| | 	|||| d S r   )
r   r   r   r   r)   r   wherer+   r,   r   )
r   r   ri   r/   r   r   r   rL   r;   resr   r   r    test_series_where[  s    z+SetitemCastingEquivalents.test_series_wherec           
      C   s   t |j|jkrtd tj|jtd}d||< |jtkrZd}tjj	|d}|j
| t || |}	t|	t | d S )N"test not applicable for this dtyperb   Tz3Index/Series casting behavior inconsistent GH#38692)reason)r   rJ   rT   skipr   r   r   r   rU   ZxfailnodeZ
add_markerr   r+   assert_index_equal)
r   r   ri   r/   r   requestr   r]   rU   r   r   r   r    test_index_whereh  s    

z*SetitemCastingEquivalents.test_index_wherec                 C   sV   t |j|jkrtd tj|jtd}d||< t |||}t	
|t | d S )Nr   rb   T)r   rJ   rT   r   r   r   r   r   Zputmaskr+   r   )r   r   ri   r/   r   r   r   r   r   r    test_index_putmaskw  s    
z,SetitemCastingEquivalents.test_index_putmaskN)rQ   rR   rS   __doc__rT   fixturer   r   r   r   r   r   r   r   r   r   r   r   r    r     s   

	r   zobj,expected,keyr%   r   r   r   r   r   rr   r~   r   Zint_series_slice_key_step)idTFrb   Zbool_series_slice_key_stepZint_series_slice_keyr#   Zint_series_int_keyZbool_series_int_key_change_allZbool_series_int_keyc                   @   s,   e Zd Zejejedgddd ZdS )TestSetitemCastingEquivalentsNaNparamsc                 C   s   |j S )zi
        One python float NaN, one np.float64.  Only np.float64 has a `dtype`
        attribute.
        paramr   r   r   r   r    r     s    z!TestSetitemCastingEquivalents.valN)	rQ   rR   rS   rT   r   r   r   Zfloat64r   r   r   r   r    r     s   0r   c                   @   sl   e Zd Zejdd Zejeeegddd Z	ejdd Z
ejdd	 Zejd
d Zejdd ZdS )!TestSetitemTimedelta64IntoNumericc                 C   s   t dd}|S )Nr   ns)r   timedelta64)r   r   r   r   r    r     s    z%TestSetitemTimedelta64IntoNumeric.valr   c                 C   s   |j S r   r   r   r   r   r    rJ     s    z'TestSetitemTimedelta64IntoNumeric.dtypec                 C   s   t d|}t|}|S )Nr   )r   r   rz   r	   r   rJ   r;   r5   r   r   r    r     s    z%TestSetitemTimedelta64IntoNumeric.objc                 C   s8   t d|}t|}|t}t dd|jd< |S )Nr   r   r   r   )r   r   rz   r	   ra   r   valuesr   r   r   r    r/     s
    
z*TestSetitemTimedelta64IntoNumeric.expectedc                 C   s   dS r   r   r   r   r   r    ri     s    z%TestSetitemTimedelta64IntoNumeric.keyc                 C   s   dS )zM
        Indicate we do _not_ expect the setting to be done inplace.
        Fr   r   r   r   r    r     s    z,TestSetitemTimedelta64IntoNumeric.is_inplaceN)rQ   rR   rS   rT   r   r   complexr   r{   rJ   r   r/   ri   r   r   r   r   r    r     s   




r   c                   @   s   e Zd Zejddgddd Zejdd Zejdd	 Zejd
d Zejdd Z	ejde
ejgddd Zejdd ZdS )TestSetitemDT64IntoIntM8[ns]m8[ns]r   c                 C   s   |j S r   r   r   r   r   r    rJ     s    zTestSetitemDT64IntoInt.dtypec                 C   s    t dd}|dkr|| }|S )Nz2021-01-18 13:25:00r   r  )r   
datetime64)r   rJ   r   r   r   r    scalar  s    zTestSetitemDT64IntoInt.scalarc                 C   s,   t ||dgtd}t|d t|s(t|S )Nr   rb   r   )r	   ra   r   r   r   )r   r  r/   r   r   r    r/     s    zTestSetitemDT64IntoInt.expectedc                 C   s   t dddgS )Nr#   r%   r   )r	   r   r   r   r    r     s    zTestSetitemDT64IntoInt.objc                 C   s
   t d dS )Nr   )r   r   r   r   r    ri     s    zTestSetitemDT64IntoInt.keyNc                 C   s   |j }|d kr|S |||gS r   r   )r   r  r   Zboxr   r   r    r     s    zTestSetitemDT64IntoInt.valc                 C   s   dS )NFr   r   r   r   r    r     s    z!TestSetitemDT64IntoInt.is_inplace)rQ   rR   rS   rT   r   rJ   r  r/   r   ri   ro   r   r   r   r   r   r   r   r    r    s   





r  c                   @   sn   e Zd Zejdd Zejdd Zejdeddgddd	 Zejd
e	j
gddd Zejdd Zd
S )TestSetitemNAPeriodDtypec                 C   sN   t tdddd}tj|jd|< || tksJtdd || D sJt|S )N
2000-01-01r   r   r   rA   i8c                 s   s   | ]}|t kV  qd S r   )r   r   r   r   r    r     s     z4TestSetitemNAPeriodDtype.expected.<locals>.<genexpr>)r	   r   r   valuer   viewrp   r   )r   ri   rM   r   r   r    r/     s    &z!TestSetitemNAPeriodDtype.expectedc                 C   s   t tddddS )Nr  r   r   r  )r	   r   r   r   r   r    r     s    zTestSetitemNAPeriodDtype.objr   r   r   c                 C   s   |j S r   r   r   r   r   r    ri     s    zTestSetitemNAPeriodDtype.keyNc                 C   s   |j S r   r   r   r   r   r    r     s    zTestSetitemNAPeriodDtype.valc                 C   s   dS )NTr   r   r   r   r    r   !  s    z#TestSetitemNAPeriodDtype.is_inplace)rQ   rR   rS   rT   r   r/   r   r   ri   r   r   r   r   r   r   r   r    r    s   



r  c                	   @   s   e Zd Zejddddgddd Zejdd	 Zejd
eje	e
ddeddgddd Zejdd Zejdd Zejdd Zd
S )TestSetitemNADatetimeLikeDtyper  r  zdatetime64[ns, UTC]zdatetime64[ns, US/Central]r   c                 C   s   |j S r   r   r   r   r   r    rJ   ,  s    z$TestSetitemNADatetimeLikeDtype.dtypec                 C   s0   t dddj}t||d}|j|ks(tt|S )Nr>   r   r   rb   )r   Zasi8r   rJ   r   r	   )r   rJ   Zi8valsr-   r   r   r    r   2  s    z"TestSetitemNADatetimeLikeDtype.objNr   r   c                 C   s   |j S r   r   r   r   r   r    r   9  s    
z"TestSetitemNADatetimeLikeDtype.valc                 C   s&   |t kp$|d kp$|tjkp$|j|jkS r   )r   r   r   rJ   )r   r   r   r   r   r    r   E  s    z)TestSetitemNADatetimeLikeDtype.is_inplacec                 C   s0   |r
|j nt}t|gt|dd   |d}|S )Nr#   rb   )rJ   ra   r	   ro   )r   r   r   r   rJ   r/   r   r   r    r/   L  s    z'TestSetitemNADatetimeLikeDtype.expectedc                 C   s   dS r   r   r   r   r   r    ri   R  s    z"TestSetitemNADatetimeLikeDtype.key)rQ   rR   rS   rT   r   rJ   r   r   r   r   r   r  r   r   r/   ri   r   r   r   r    r  &  s*   




	


r  c                   @   sD   e Zd Zejdd Zejdd Zejdd Zejdd Zd	S )
$TestSetitemMismatchedTZCastsToObjectc                 C   s   t tddddS )N2000r%   
US/Centralr8   )r	   r   r   r   r   r    r   Y  s    z(TestSetitemMismatchedTZCastsToObject.objc                 C   s   t dddS )Nr  r7   rD   )r   r   r   r   r    r   ]  s    z(TestSetitemMismatchedTZCastsToObject.valc                 C   s   dS r   r   r   r   r   r    ri   a  s    z(TestSetitemMismatchedTZCastsToObject.keyc                 C   s$   t tdddtdddgtd}|S )Nz2000-01-01 00:00:00-05:00r7   rD   z2000-01-02 00:00:00-06:00r  rb   )r	   r   ra   )r   r/   r   r   r    r/   e  s    

z-TestSetitemMismatchedTZCastsToObject.expectedN)	rQ   rR   rS   rT   r   r   r   ri   r/   r   r   r   r    r  W  s   


r  zobj,expectedg      ?g       @r   i  rZ   barZbazc                   @   s6   e Zd Zejdd Zejdd Zejdd ZdS )TestSeriesNoneCoercionc                 C   s   dS r   r   r   r   r   r    ri     s    zTestSeriesNoneCoercion.keyc                 C   s   d S r   r   r   r   r   r    r     s    zTestSeriesNoneCoercion.valc                 C   s   |j jdkS )Ni)rJ   r   )r   r   r   r   r    r     s    z!TestSeriesNoneCoercion.is_inplaceN)rQ   rR   rS   rT   r   ri   r   r   r   r   r   r    r  q  s   

r  )2r   r   Znumpyr   rT   Zpandasr   r   r   r   r   r	   r
   r   r   r   Zpandas._testingZ_testingr+   Zpandas.core.indexingr   Zpandas.tseries.offsetsr   r   rW   rh   r   r   r   r   r   r   r   r   r   r   rU   rV   r   r   r   ra   r   r   r   r  r  r  r  r  r   r   r   r    <module>   s   0t+T#H "

$
/
((1$