U
    >vfF                     @  s   d dl m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 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mZ d dlmZ d dlmZ G d	d
 d
ZG dd deZ dS )    )annotations)datetimeN)	Timestamp)is_datetime64tz_dtypeis_integer_dtype)CategoricalDtype)
CategoricalIndexDatetimeIndexIndexIntervalIndex
MultiIndexPeriodIndex
RangeIndexSeriesTimedeltaIndexisna)BaseMaskedArrayc                   @  s  e Zd ZU dZded< ejdd Zdd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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 Zd8d9 Z d:d; Z!d<d= Z"d>d? Z#ej$%d@dAdB dCdB gdDdE Z&dFdG Z'ej$%dHdIdJgej$%dKdLdMgej$%dNdIdJgdOdP Z(dQdR Z)ej$j*dSdT Z+dUdV Z,dWdX Z-dYdZ Z.d[d\ Z/d]d^ Z0d_d` Z1dadb Z2dcdd Z3dedf Z4dgdh Z5didj Z6dkdl Z7dmdn Z8dodp Z9dLS )qBasez/
    Base class for index sub-class tests.
    ztype[Index]
_index_clsc                 C  s   t dd S NzMethod not implementedNotImplementedErrorself r   ?/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/indexes/common.pysimple_index)   s    zBase.simple_indexr
   )returnc                 C  s   t dd S r   r   r   r   r   r   create_index-   s    zBase.create_indexc              	   C  s:   d dddddg}tjt|d |   W 5 Q R X d S )N|zNIndex\(\.\.\.\) must be called with a collection of some kind, None was passedzPDatetimeIndex\(\) must be called with a collection of some kind, None was passedzQTimedeltaIndex\(\) must be called with a collection of some kind, None was passedz:__new__\(\) missing 1 required positional argument: 'data'z2__new__\(\) takes at least 2 arguments \(1 given\)match)joinpytestraises	TypeErrorr   )r   msgr   r   r   test_pickle_compat_construction0   s    z$Base.test_pickle_compat_constructionc              	   C  sb   |}dt |j }tjt|d |d W 5 Q R X tjt|d |dd W 5 Q R X d S )Nz\This method is only implemented for DatetimeIndex, PeriodIndex and TimedeltaIndex; Got type r          )type__name__r#   r$   r   shiftr   r   idxr&   r   r   r   
test_shiftA   s    zBase.test_shiftc              	   C  s2   |}t jtdd t||g d W 5 Q R X d S )Nz"Index.name must be a hashable typer    name)r#   r$   r%   r*   r   r   r.   r   r   r    test_constructor_name_unhashableM   s    z%Base.test_constructor_name_unhashablec                 C  s   |}t |tsHd|_t|}t|| t|dd}d|_t|| nzddg|_t|}t|ttdddddd	gd
dddgd t|ddgd}t|ttdddddd	gd
dddgd d S )Nfoobarr0   )r4   one)r4   two)r5   r6   )Zbazr7   )quxr6   )r8   r7   objectdtype)namesAB)
isinstancer   r1   r
   tmassert_index_equalr<   )r   r   expectedresultr   r   r   test_create_index_existing_nameT   sV    

z$Base.test_create_index_existing_namec           	   	   C  s  |}t |trtt|tkr"d S t|jj}t|j}dd| dd| d| dg}tj	t
|d |d  W 5 Q R X dd| d	d
| d| dg}tj	t
|d d|  W 5 Q R X |dd}tj	t
|d |d  W 5 Q R X |dd}tj	t
|d d|  W 5 Q R X |dd}tj	t
|d |d  W 5 Q R X |dd}tj	t
|d d|  W 5 Q R X d S )Nr   z'unsupported operand type\(s\) for \*: 'z' and 'int'zIcannot perform (__mul__|__truediv__|__floordiv__) with this index type: ()r    r(   z1unsupported operand type\(s\) for \*: 'int' and ''zLcannot perform (__rmul__|__rtruediv__|__rfloordiv__) with this index type: (*/z//)r?   r   AssertionErrorr*   r
   _datar+   r"   r#   r$   r%   replace)	r   r   r.   typclsZlmsgZrmsgZdiv_errZfloordiv_errr   r   r   test_numeric_compat   s@    


zBase.test_numeric_compatc              	   C  sL   |}t jtdd |  W 5 Q R X t jtdd |  W 5 Q R X d S )Nzcannot perform allr    zcannot perform any)r#   r$   r%   allanyr2   r   r   r   test_logical_compat   s
    zBase.test_logical_compatc                 C  s   |}t tt|| d S N)r@   rA   evalreprr2   r   r   r   test_repr_roundtrip   s    zBase.test_repr_roundtripc              	   C  sB   |}| d}tdd  t| dt|ks4tW 5 Q R X d S )N2   zdisplay.max_seq_itemsz...)repeatpdZoption_contextrT   strrI   r2   r   r   r   test_repr_max_seq_item_setting   s
    
z#Base.test_repr_max_seq_item_settingc                 C  sB  i }t |tr|j|d< n2t |tttfr.d S |jtkrL|jdkrL|j|d< t	|}||j
fddi|}t|jr|d|j}t |ttfr|d }t|| t |tr|f |jdd|}tj|j|jd	d
 n\t |trnNt	|tkrt |jtjs||j
fddi|}t|| t |jtrt|jj|jjsXttj|jj|jjd	d
 t|jj|jjsttj|jj|jjd	d
 nn|jdkrt|jj|jjsttj|jj|jjd	d
 n.|jdkrt|j|jstn
t |jn*||j
fddi|}tj|j
|j
d	d
 d S )Nfreqbooleanr;   copyTUTCF)Zordinalr]   Zsame)Z
check_samezstring[python]zstring[pyarrow])!r?   r   r[   r   r   r   r;   r9   inferred_typer*   valuesr   Ztz_localizeZ
tz_converttzr	   r   
_with_freqr@   rA   Zasi8assert_numpy_array_equalr   r
   np_valuesr   Zshares_memoryrJ   rI   Z_maskZ_ndarrayr   )r   indexZinit_kwargsZ
index_typerC   r   r   r   test_ensure_copied_data   s^    





      zBase.test_ensure_copied_datac                 C  s   |j   | }|jr(|dks$td S ||d  | }|jdd}t|ttfs~t	|t
krrt|jtjr~||ks~t|jdkr||kstd S )Nr   Tdeepr9   )_engineZclear_mappingZmemory_usageemptyrI   get_locr?   r   r   r*   r
   r;   rd   r_   )r   rf   rC   Zresult2Zresult3r   r   r   test_memory_usage   s     


zBase.test_memory_usagec                 C  s8   t |trd S | }t| }tj||dd d S )NF)Zcheck_dtype)r?   r   argsortrd   arrayr@   rc   )r   rf   rC   rB   r   r   r   test_argsort  s
    
zBase.test_argsortc              	   C  s   t |}| }t|| t j|dd}|jdd}t|| t|ttfrd}tjt	|d t j|dd W 5 Q R X d}tjt	|d t j|dd	 W 5 Q R X d S )
NZ	mergesort)kind%the 'axis' parameter is not supportedr    r(   Zaxisz&the 'order' parameter is not supported)ab)order)
rd   rn   r@   rc   r?   r   r   r#   r$   
ValueError)r   rf   rC   rB   r&   r   r   r   test_numpy_argsort  s    
	zBase.test_numpy_argsortc                 C  sx   d}|  }|j}||j||jd}t||| |}tt	|}||j||jd}t||| d S )Nr)   r0   )
r]   Z_constructorr`   rW   r1   r@   rA   rd   arangelen)r   r   repr.   Znew_index_clsrB   r   r   r   test_repeat8  s    zBase.test_repeatc              	   C  sX   d}|}| |}tt ||| d}tjt|d tj ||dd W 5 Q R X d S )Nr)   rr   r    r   rs   )rW   r@   rA   rd   r#   r$   rw   )r   r   r{   r.   rB   r&   r   r   r   test_numpy_repeatD  s    
zBase.test_numpy_repeatc                 C  s   |}|}t |ttfr |d }dgt| }|||}|}t|| dgdgt|dd    }t|j	g|dd  
  |jd}|||}t|| d S )NTFr(   r:   )r?   r	   r   rb   rz   wherer@   rA   r
   Z	_na_valuetolistr;   )r   Zlistlike_boxr   klassr.   ZcondrC   rB   r   r   r   
test_whereN  s    
"zBase.test_wherec                 C  s>   |dd }t |sd S |dd |d|d s:td S )Nr(      r   )rz   equalsinsertrI   )r   rf   rC   r   r   r   test_insert_base`  s    zBase.test_insert_basec              	   C  s   t |dkrt}nt}t |dkr(d}nd}tj||d |dd W 5 Q R X ddd	g}tjt|d |t |d
 d
 W 5 Q R X tjt|d |t | d
 d
 W 5 Q R X d S )Nr   z5index (0|0.5) is out of bounds for axis 0 with size 0zBslice indices must be integers or None or have an __index__ methodr    g      ?r4   r   z5index -?\d+ is out of bounds for axis 0 with size \d+zloc must be an integer betweenr(   )rz   r%   
IndexErrorr#   r$   r   r"   )r   rf   errr&   r   r   r   test_insert_out_of_boundsi  s"    zBase.test_insert_out_of_boundsc              	   C  s   t |sd S t|trd S |dd  }|d}||s>t|j|jksNt|d d }|d}||srt|j|jkstt |}d| d| }tjt	|d || W 5 Q R X d S )Nr(   r   zindex z' is out of bounds for axis 0 with size r    )
rz   r?   r   deleter   rI   r1   r#   r$   r   )r   rf   rB   rC   lengthr&   r   r   r   test_delete_base  s     


zBase.test_delete_basec                 C  s   t |trd S t|tko(t |jtj }||s8t|| sJt|sb||	t
sbt|t|rtt|t|rtt |ts|st|t
d}||st||st|jdkr|t|rtd S )Nr:   r(   )r?   r   r*   r
   r;   rd   r   rI   r]   astyper9   listro   r   Znlevelsr   )r   rf   Z	is_ea_idxZsame_valuesr   r   r   test_equals  s    

zBase.test_equalsc              	   C  s  |}t |}|dd }|dd |dd }|dd }d}tjt|d ||k W 5 Q R X tdg| }tdg|d  dg }	t||k| t||k|	 t|}
t|dd }t|dd |dd }t|dd }tjt|d ||k W 5 Q R X t||
k| t||k|	 t	|
}t	|}t	|}t	|}tjt|d ||k W 5 Q R X t||k| t||k|	 tjtd	d ||k W 5 Q R X tjtd	d ||k W 5 Q R X tjtd	d ||k W 5 Q R X d
}tjt|d ||k W 5 Q R X tjtd	d ||k W 5 Q R X t
|tstdgt |d  ddg }|d }t||k| t||kt	| d S )Nr   r   r(   z)Lengths must match|could not be broadcastr    TFzLengths must matchz3Can only compare identically-labeled Series objectsr)   )rz   appendr#   r$   rw   rd   ro   r@   rc   r   r?   r   assert_series_equal)r   r   Zindex_anZindex_bZindex_cZindex_dr&   Z	expected1Z	expected2Zarray_aZarray_bZarray_cZarray_dZseries_aZseries_bZseries_cZseries_dZ	expected3itemr   r   r   test_equals_op  sX    
  zBase.test_equals_opc                 C  s&   |}dd |D }|  |ks"td S )Nc                 S  s   g | ]}t |qS r   rY   .0xr   r   r   
<listcomp>  s     z$Base.test_format.<locals>.<listcomp>)formatrI   r   r   r.   rB   r   r   r   test_format  s    zBase.test_formatc                 C  s4   |  g }| g kst|jdddgks0td S )NTr0    )r   r   rI   )r   Z	empty_idxr   r   r   test_format_empty  s    
zBase.test_format_emptyc              	   C  st  t |dkrd S |jtkrd S t|tr6t|jr6d S t|trz|jdd}d}tj	t
|d ||d  W 5 Q R X n|jdd}||d }t|| ||k	std}tj	t|d ||d g W 5 Q R X |jdd}|j}tj|d< t||}d}tj	t
|d |j|d d	d
 W 5 Q R X tjdgt | td}d|d< t|j| |jdksptd S )Nr   Trh   "isna is not defined for MultiIndexr    z"'value' must be a scalar, passed: r(   zdoes not support 'downcast'Zinfer)ZdowncastFr:   )rz   r;   boolr?   r
   r   r   r]   r#   r$   r   Zfillnar@   rA   rI   r%   re   rd   nanr*   ro   rc   Z_isnanhasnans)r   rf   r.   r&   rC   r`   rB   r   r   r   test_fillna   s:    


zBase.test_fillnac              	   C  s   t |dkr(t| tjg td nt|trb|	 }d}t
jt|d |  W 5 Q R X nn|jst| tjt |td t| tjt |td n*t|}t| | t| |  d S )Nr   r:   r   r    )rz   r@   rc   r   rd   ro   r   r?   r   r]   r#   r$   r   r   zerosZnotnaZones)r   rf   r.   r&   rC   r   r   r   
test_nulls)  s    
 zBase.test_nullsc                 C  s$   |}|j rt|d d j s td S Nr   )rk   rI   r2   r   r   r   
test_empty;  s    
zBase.test_emptyc                 C  s,   |}|j r(|j||d}||k s(td S )N)how)	is_uniquer"   rO   rI   )r   Z	join_typer   r.   Zjoinedr   r   r   test_join_self_uniqueA  s    zBase.test_join_self_uniquec                 C  s&   |}| dd }tj||dd d S )Nc                 S  s   | S rR   r   )r   r   r   r   <lambda>K      zBase.test_map.<locals>.<lambda>equivexact)mapr@   rA   )r   r   r.   rC   r   r   r   test_mapG  s    zBase.test_mapmapperc                 C  s   dd t | |D S )Nc                 S  s   i | ]\}}||qS r   r   )r   eir   r   r   
<dictcomp>R  s      z!Base.<lambda>.<locals>.<dictcomp>)zipr`   rf   r   r   r   r   R  r   zBase.<lambda>c                 C  s
   t | |S rR   )r   r   r   r   r   r   S  r   c                 C  s   |}t |tr"tdt|  ||j|}||}tj||dd d }|j	j
dkr^|j	}ttjgt| |d}||||}t|| d S )Nzskipping tests for r   r   fr:   )r?   r   r#   skipr*   r`   r   r@   rA   r;   rq   r
   rd   r   rz   )r   r   r   r.   identityrC   r;   rB   r   r   r   test_map_dictlikeO  s    

zBase.test_map_dictlikec                 C  s4   |}| t}tdd |D td}t|| d S )Nc                 S  s   g | ]}t |qS r   r   r   r   r   r   r   r  s     z%Base.test_map_str.<locals>.<listcomp>r:   )r   rY   r
   r9   r@   rA   )r   r   r.   rC   rB   r   r   r   test_map_strn  s    
zBase.test_map_strr]   TFr1   Nr4   orderedc           	      C  s   |}|r| |}t|d}|j||d}t|||d}tj||dd t|  d d |}|j||d}t|||d}tj||dd |dkr|jd	|d}t||d
}tj||dd d S )N)r   )r]   )r1   r   Tr   r   )r1   r;   Fcategoryr0   )renamer   r   r   r@   rA   uniquer   )	r   r]   r1   r   r   r.   r;   rC   rB   r   r   r   test_astype_categoryu  s    

zBase.test_astype_categoryc                 C  s   |  }|jdkst|d d }|jdks0t|d|d }|jdksNt|dtj}|jdksjt|dtj}|jdkstd S )NTr   F)Zdrop_duplicatesr   rI   r   rd   r   )r   r   rf   Zindex_emptyZ	index_dupZindex_naZindex_na_dupr   r   r   test_is_unique  s    zBase.test_is_uniquec                 C  s2   |}t t|}|j t t||ks.td S rR   )rz   gcZget_referrersrj   rI   )r   r   rf   Z	nrefs_prer   r   r   test_engine_reference_cycle  s    z Base.test_engine_reference_cyclec              	   C  s   |}d}t jt|d |d d d f  W 5 Q R X t|tst jt|d |d  W 5 Q R X t jt|d |d  W 5 Q R X nHd}t jt|d |d  W 5 Q R X t jt|d |d  W 5 Q R X d S )NzMulti-dimensional indexingr    TFzonly integers, slices)r#   r$   rw   r?   r   r   r-   r   r   r   test_getitem_2d_deprecated  s    
zBase.test_getitem_2d_deprecatedc                 C  s.   |}| |d  | }|j|jks*td S r   )rl   r]   _cacherI   )r   r   r.   r]   r   r   r   test_copy_shares_cache  s    zBase.test_copy_shares_cachec                 C  sX   |}| |d  | }|j|jks*t||j}|j|jk	sFt|ji ksTtd S r   )rl   Z_viewr   rI   Z_shallow_copyrJ   )r   r   r.   Zshallow_copyr   r   r   test_shallow_copy_shares_cache  s    z#Base.test_shallow_copy_shares_cachec              	   C  s   |d d }t ddt jddg}t|||ddg |ddg d ttdd	dtdd
dtj	tdd
dtdd	dgddj
}tdtdg}|d |ddg |d |ddg i}t||| d S )N   r(   r)   r   r      )g      ?g       @i        r^   )ra   z
2011-11-01z
2011-12-01)rd   ro   r   r@   Zassert_dict_equalgroupbyr	   r   rX   NaTr`   r   )r   r   r.   Z
to_groupbyZex_keysrB   r   r   r   test_index_groupby  s$     



$zBase.test_index_groupbyc                 C  s   |}t |}||}|j|jks&ttj|d | |dd tj||d  |dd |tt|d }tj||dd d S )NT)Zcheck_exactr)   )	rz   r   r;   rI   r@   rA   Ztaker   range)r   r   rf   NrC   Zaltr   r   r   test_append_preserves_dtype  s    
z Base.test_append_preserves_dtypec              	   C  s   |}|j jdkrP| }t|j |jd}t|| t| }t|t| nZ|j jdkrbd}nd}t	j
t|d |  W 5 Q R X t	j
t|d t|  W 5 Q R X d S )N)r   ur0   r   z0ufunc 'invert' not supported for the input typeszbad operandr    )r;   rq   r
   r`   r1   r@   rA   r   r   r#   r$   r%   )r   r   r.   resrB   Zres2r&   r   r   r   test_inv  s    
zBase.test_invc              	   C  s&   |}t t |  W 5 Q R X d S rR   )r@   assert_produces_warningFutureWarningZ
is_booleanr2   r   r   r   test_is_boolean_is_deprecated  s    z"Base.test_is_boolean_is_deprecatedc              	   C  s&   |}t t |  W 5 Q R X d S rR   )r@   r   r   Zis_floatingr2   r   r   r   test_is_floating_is_deprecated  s    z#Base.test_is_floating_is_deprecatedc              	   C  s&   |}t t |  W 5 Q R X d S rR   )r@   r   r   
is_integerr2   r   r   r   test_is_integer_is_deprecated  s    z"Base.test_is_integer_is_deprecatedc              	   C  s:   |}t |j d}tjt|d |  W 5 Q R X d S )Nz.holds_integer is deprecated. r    )r*   r+   r@   r   r   Zholds_integerr-   r   r   r   test_holds_integer_deprecated!  s    z"Base.test_holds_integer_deprecatedc              	   C  s6   |}t jtt|j dd |  W 5 Q R X d S )Nz.is_numeric is deprecated. r    )r@   r   r   r*   r+   Z
is_numericr2   r   r   r   test_is_numeric_is_deprecated(  s    z"Base.test_is_numeric_is_deprecatedc              	   C  s*   |}t jtdd |  W 5 Q R X d S )Nz4Use pandas\.api\.types\.is_categorical_dtype insteadr    )r@   r   r   Zis_categoricalr2   r   r   r   !test_is_categorical_is_deprecated1  s    z&Base.test_is_categorical_is_deprecatedc              	   C  s&   |}t t |  W 5 Q R X d S rR   )r@   r   r   Zis_intervalr2   r   r   r   test_is_interval_is_deprecated:  s    z#Base.test_is_interval_is_deprecatedc              	   C  s&   |}t t |  W 5 Q R X d S rR   )r@   r   r   Z	is_objectr2   r   r   r   test_is_object_is_deprecated@  s    z!Base.test_is_object_is_deprecated):r+   
__module____qualname____doc____annotations__r#   Zfixturer   r   r'   r/   r3   rD   rN   rQ   rU   rZ   rg   rm   rp   rx   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   r   r   Zarm_slowr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   "   sz   

4+8	
	>)

		r   c                   @  s~   e Zd 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dd Zejdejejgdd Zdd ZdS )NumericBasezJ
    Base class for numeric index (incl. RangeIndex) sub-class tests.
    c                 C  sD   | j }tddg|d}||}tjddg|jd}t|j| d S )Nr(   r)   r:   )r   r
   rd   ro   r;   r@   rc   rJ   )r   r;   	index_clsr.   rC   rB   r   r   r   test_constructor_unwraps_indexL  s
    z*NumericBase.test_constructor_unwraps_indexc                 C  s   d S rR   r   r   r   r   r   r   T  s    zNumericBase.test_wherec                 C  s"   |}|d }| |dkstd S )Nr   F)Z$_can_hold_identifiers_and_holds_namerI   )r   r   r.   keyr   r   r   test_can_hold_identifiersX  s    z%NumericBase.test_can_hold_identifiersc                 C  sr   | j }|g |dd}| }|jdks*t||}tj|||dddd ||}tj|||dddd d S )NZFoo)r;   r1   r0   Tr   )r   viewr1   rI   r@   rA   )r   r;   r   r.   Zidx_viewr   r   r   	test_view]  s    

zNumericBase.test_viewc                   s<   |}t dd |D   fdd|D }| |ks8td S )Nc                 s  s   | ]}t t|V  qd S rR   )rz   rY   r   r   r   r   	<genexpr>m  s     z*NumericBase.test_format.<locals>.<genexpr>c                   s   g | ]}t | qS r   )rY   ljustr   	max_widthr   r   r   n  s     z+NumericBase.test_format.<locals>.<listcomp>)maxr   rI   r   r   r   r   r   j  s    zNumericBase.test_formatc                 C  s   d S rR   r   r   r   r   r   rN   q  s    zNumericBase.test_numeric_compatc                 C  sD   |}| d|d }t|d gt| |jd}tj||dd d S )Nr   r:   Tr   )r   r
   r   r;   r@   rA   )r   r   rf   rC   rB   r   r   r   test_insert_non_nat  s    zNumericBase.test_insert_non_nac                 C  s   |}|}|t jkr:t|d t jgt|dd   td}n<t|d tjgt|dd   }|jjdkrvt||jd}|	d|}t
j||dd d S )Nr   r(   r:   r   Tr   )rX   r   r
   r   r9   rd   r   r;   rq   r   r@   rA   )r   Znulls_fixturer   rf   Zna_valrB   rC   r   r   r   test_insert_na~  s    
("zNumericBase.test_insert_nac                 C  s   | j }|tkrtd}n|tjddd}tjdddd }t|tjd}|d }t|| d| }t|| t|tjd}tjddd}|| }t|| t| tjd}tjddd}|| }t|| d S )Nr   Zint64r:   g	@float64)	r   r   rd   ry   r
   r   r@   rA   r   )r   r   r.   ZarrrB   Zfidxrt   rC   r   r   r   $test_arithmetic_explicit_conversions  s$    
z0NumericBase.test_arithmetic_explicit_conversionscomplex_dtypec                 C  s(   | |}t|tkr |j|ks$td S rR   )r   r*   r
   r;   rI   )r   r   r   rC   r   r   r   test_astype_to_complex  s    
z"NumericBase.test_astype_to_complexc                 C  s8   | j dddg|d}| j dddg|d}t|| d S )N012r:   r   r(   r)   )r   r@   rA   )r   r;   rC   rB   r   r   r   test_cast_string  s    zNumericBase.test_cast_stringN)r+   r   r   r   r   r   r   r   r   rN   r   r   r   r#   r   r   rd   Z	complex64Z
complex128r   r   r   r   r   r   r   G  s   

r   )!
__future__r   r   r   Znumpyrd   r#   Zpandas._libs.tslibsr   Zpandas.core.dtypes.commonr   r   Zpandas.core.dtypes.dtypesr   ZpandasrX   r   r	   r
   r   r   r   r   r   r   r   Zpandas._testingZ_testingr@   Zpandas.core.arraysr   r   r   r   r   r   r   <module>   s&   0      +