U
    f/e?                     @   s  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 d dlmZ d dlmZmZmZmZmZmZ G dd dZejdejd d	gejd
ejdfeddgejdfe	ddge	jdfe	j ddgddedfe	j!ddgddee	j"j#j#$dfe	j%&d d	dgedfej'e	 ddgejdejj(ddgdej'e	)d gejd!ejj(d"dgdgd#d$ Z*ejd%ed	dd&ggd'd( Z+d)d* Z,ejd+e	ddgd,fe	j"j-j.d-d.gd/dd0fe	jd ej/gd1d
d0fe&d d	gd2fed d	gd3feejd	dgdd
d0feejd4d5gd6d
eddd
d0fgd7d8 Z0d9d: Z1ejd;ejd	dgejd
ejd	dgejd
fe	ddgejddge2d
fe	j"j-j.d-d.gd/dee	j3d-d/de	j3d.d/dgfe	jd ej/gd1d
ejd e	j4ge2d
fe&d d	dgeje	5d d	e	5d	dge2d
fed d	gejd d	gejd
feejd-d.gd6d
ejd-d.gd6d
feejd<d=gd6d
eddd
eed>dded?ddgfeejd d@gdAd
dBdejd d@gd!d
fe	edCddDdEeedCdDdedFdDdgfg
dGdH Z6ejdIdJdKgejd%ejd	dd&gdd
ejdddLge2d
gdMdN Z7ejdIdJdKgdOdP Z8ejdQd	ddgdRd dSdTdUgfed-ed-e	j9gded-e:dVgd& fgdWdX Z;dYdZ Z<ejd[d	dd&gd	ddgd\ed	dd&ged	dej/gd\e	d	dd&ge	d	ddgd\gejd]e=ej/fe2dfgd^d_ Z>ejd`de	d	ddgiejdSgdTgej/gge=d
fd	dd&gd	dd&gd\ejd	d	gddgd&d&gge=d
fgdadb Z?dcdd Z@G dedf dfZAdS )g    N)is_datetime64_dtypeis_timedelta64_dtype)DatetimeTZDtype)CategoricalIndexSeries	Timedelta	Timestamp
date_range)DatetimeArrayIntervalArrayPandasArrayPeriodArraySparseArrayTimedeltaArrayc                   @   s  e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefdefdefdefgZej	
deej	j
ddd dd dd dd gddddgddd Zej	
ddedfded fd!edfd!ed fgej	j
dd"d d#d d$d d%d gddddgdd&d' Zej	
ded(d) Zej	
dedefd!efg d*d+ Zej	j
dd,d d-d d.d d/d gddddgdd0d1 Zd2d3 Zd4S )5TestToIterableZint8Zint16Zint32int64Zuint8Zuint16Zuint32Zuint64Zfloat16Zfloat32float64datetime64[ns]datetime64[ns, US/Eastern]timedelta64[ns]zdtype, rdtypemethodc                 C   s   |   S Ntolistx r   E/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/base/test_conversion.py<lambda>5       zTestToIterable.<lambda>c                 C   s   |   S r   to_listr   r   r   r   r   6   r   c                 C   s   t | S r   listr   r   r   r   r   7   r   c                 C   s   t |  S r   r#   __iter__r   r   r   r   r   8   r   r   r!   r#   iter)idsc                 C   s0   |}|dg|d}||d }t ||s,td S N   dtyper   
isinstanceAssertionError)selfindex_or_seriesr   r+   rdtypetypsresultr   r   r   test_iterable1   s    zTestToIterable.test_iterablezdtype, rdtype, objobjectar)   categoryc                 C   s   |   S r   r   r   r   r   r   r   Q   r   c                 C   s   |   S r   r    r   r   r   r   r   R   r   c                 C   s   t | S r   r"   r   r   r   r   r   S   r   c                 C   s   t |  S r   r$   r   r   r   r   r   T   r   c           	      C   s0   |}||g|d}||d }t ||s,td S )Nr*   r   r,   )	r/   r0   r   r+   r1   objr2   r3   r4   r   r   r   !test_iterable_object_and_categoryE   s    z0TestToIterable.test_iterable_object_and_categoryc                 C   sV   t dg|d}t| d \}}t||s0tt| d \}}t||sRtd S r(   )r   r#   itemsr-   r.   )r/   r+   r1   r3   _r4   r   r   r   test_iterable_itemsc   s
    z"TestToIterable.test_iterable_itemsc                 C   s@   |}|dg|d}| td }t|ts0|f}||ks<td S r(   )maptyper-   tupler.   )r/   r0   r+   r1   r2   r3   r4   r   r   r   test_iterable_mapo   s    
z TestToIterable.test_iterable_mapc                 C   s   |   S r   r   r   r   r   r   r      r   c                 C   s   |   S r   r    r   r   r   r   r      r   c                 C   s   t | S r   r"   r   r   r   r   r      r   c                 C   s   t |  S r   r$   r   r   r   r   r      r   c                 C   s2   t tdtdg}||d }t|ts.td S )Nz
1999-12-31z
2000-12-31r   )r   r   r-   r.   )r/   r   ir4   r   r   r   test_categorial_datetimelike|   s    z+TestToIterable.test_categorial_datetimelikec                 C   s  t dt dg}t|}|jdks&tt||D ]0\}}t|t sFt|jd ksTt||ks0tq0t dddt dddg}t|}|jdkstt||D ]2\}}t|t st|j|jkst||kstqtdtdg}t|}|jd	kstt||D ]$\}}t|tst||kstqtj	dd
dtj	dd
dg}t|}|jdksXtt||D ]:\}}t|tj	s|t|j
d
kst||ksbtqbd S )Nz
2011-01-01z
2011-01-02r   
US/Easterntzr   z1 daysz2 daysr   Mfreqz	Period[M])r   r   r+   r.   zipr-   rF   r   pdPeriodrI   )r/   valsr3   resexpr   r   r   test_iter_box   s:    

zTestToIterable.test_iter_boxN)__name__
__module____qualname__intfloatr   r   dtypespytestmarkparametrizer5   r6   r:   r=   rA   rC   rP   r   r   r   r   r      s|   

		


 




r   zarr, expected_type, dtyper)   r*   r   r7   br6   r8   Z2017Z2018
US/CentralrE   zdatetime64[ns, US/Central]i  i  ArH   zA-DEC   intervalr   zdatetime _valuesreason)Zmarksl    d(	 zm8[ns]ztimedelta _valuesc                 C   sJ   t | j}t| j}t||ks&tt|t|ks:tt|| d S r   )r   Z_valuesrK   Indexr?   r.   tmZassert_equal)arrZexpected_typer+   Zl_valuesZr_valuesr   r   r   test_values_consistent   s
    )
rd   rc      c                 C   s&   t | }|j}t| }t|| d S r   )r   arrayr   rb   Zassert_extension_array_equal)rc   serr4   expectedr   r   r   test_numpy_array   s    ri   c                 C   sR   t | d}|j}t| r(t|tsNtn&t| r@t|tsNtnt|tsNtd S )Nr*   )	r   rf   r   r-   r
   r.   r   r   r   )Zany_numpy_dtyperg   r4   r   r   r   test_numpy_array_all_dtypes   s    
rj   z	arr, attr_codes20002001D_dataInt64_leftZ_sparse_valuesz2000-01-01T12:00:00z2000-01-02T12:00:00M8[ns]c                 C   sb   |}| j jdkr,|tjkr,td| j   || ddj}|rRt| |} t||}|| ks^td S )Nrp   zSparse[int64, 0]No index type for Fcopy)	r+   namerK   ra   rW   skiprf   getattrr.   )rc   attrr0   boxr4   r   r   r   
test_array   s    

r|   c               	   C   s>   t jdgddgg} d}tjt|d | j W 5 Q R X d S )Nr\   r7   rZ   z&MultiIndex has no single backing arraymatch)rK   Z
MultiIndexZfrom_productrW   raises
ValueErrorrf   )idxmsgr   r   r   test_array_multiindex_raises  s    r   zarr, expectedz2000-01-01T06:00:00z2000-01-02T06:00:00
2000-01-01
2000-01-02l     qai8Hz
2016-01-01z
US/PacificperiodsrF   z
2016-01-02c                 C   s   |}|| }| j jdkr4|tjkr4td| j   | j jdkrd|tjkrdtjjdd}|j	
| | }t|| t|}t|| d S )Nrs   rt   r   z,thing is Int64 and to_numpy() returns objectr_   )r+   rw   rK   ra   rW   rx   rf   rX   xfailnodeZ
add_markerto_numpyrb   assert_numpy_array_equalnpasarray)rc   rh   Zindex_or_series_or_arrayrequestr{   thingrX   r4   r   r   r   test_to_numpy   s    5
r   	as_seriesTFcc                 C   s   t j| dd}|r t|jdd}| }t| |dks<t|jdd}t| |dks\t|jdd}t| |dks|td S )NFru   T)rK   ra   r   valuesr   r   Zshares_memoryr.   )rc   r   r9   r4   r   r   r   test_to_numpy_copyf  s    r   c                 C   s   d}t jddg|d}| r"t|}| }tjtd|dtd|dgtd}t	|| |jdd}t	|| |jdd}tjdd	gdd}t	|| d S )
NrD   rl   rm   rE   r*   r6   rr   z2000-01-01T05z2001-01-01T05)
rK   DatetimeIndexr   r   r   rf   r   r6   rb   r   )r   rF   r9   r4   rh   r   r   r   test_to_numpy_dtype{  s     r   z!values, dtype, na_value, expectedr         ?       @        z2000-01-01T00:00:00.000000000c                 C   s0   | |}|j ||d}t|}t|| d S Nr+   na_value)r   r   rf   rb   r   )r0   r   r+   r   rh   r9   r4   r   r   r   "test_to_numpy_na_value_numpy_dtype  s    
r   c               	   C   st   t dddg} d}tjt|d | jdd W 5 Q R X t dddgdd	} tjt|d | jdd W 5 Q R X d S )
Nr)   r]   re   z5to_numpy\(\) got an unexpected keyword argument 'foo'r}   T)Zfoorp   r*   )r   rW   r   	TypeErrorr   )r3   r   r   r   r   test_to_numpy_kwargs_raises  s    r   data)r7   rZ   zdtype, na_valuec                 C   sH   t | }|j||d}tjddgddgd|gg|d}t|| d S )Nr   r)   r]   re   r*   )rK   	DataFramer   r   rf   rb   r   )r   r+   r   dfr4   rh   r   r   r    test_to_numpy_dataframe_na_value  s    
 r   zdata, expectedc                 C   s*   t | }|jttjd}t|| d S r   )rK   r   r   rU   r   nanrb   r   )r   rh   r   r4   r   r   r   $test_to_numpy_dataframe_single_block  s    
r   c                  C   sL   t tddtjg} t tddtjg}| jdd t| | d S )Nr   r   r   )r   )rK   r   r   rf   r   r   rb   Zassert_frame_equal)r4   rh   r   r   r   .test_to_numpy_dataframe_single_block_no_mutate  s    r   c                   @   s6   e Zd Zejdddgdd Zdd Zdd	 ZdS )
TestAsArrayrF   Nr[   c              	   C   sd   t tdd|d}td  tj|td}W 5 Q R X ttd|dtd|dg}t	|| d S )Nrl   r]   r   r*   r   rE   r   )
r   r	   rb   Zassert_produces_warningr   r   r6   rf   r   r   )r/   rF   rg   r4   rh   r   r   r   test_asarray_object_dt64  s    z$TestAsArray.test_asarray_object_dt64c                 C   s<   t tddd}tjddgdd}t|}t|| d S )Nrl   r]   )r   r   r   rr   r*   r   r	   r   rf   r   rb   r   )r/   rg   rh   r4   r   r   r   test_asarray_tz_naive  s    
z!TestAsArray.test_asarray_tz_naivec                 C   s`   d}t tdd|d}tjddgdd}tj|d	d}t|| tj|dd}t|| d S )
Nr[   rl   r]   r   z2000-01-01T06z2000-01-02T06rr   r*   r   r   )r/   rF   rg   rh   r4   r   r   r   test_asarray_tz_aware  s    z!TestAsArray.test_asarray_tz_aware)	rQ   rR   rS   rW   rX   rY   r   r   r   r   r   r   r   r     s   
r   )BZnumpyr   rW   Zpandas.core.dtypes.commonr   r   Zpandas.core.dtypes.dtypesr   ZpandasrK   r   r   r   r   r	   Zpandas._testingZ_testingrb   Zpandas.core.arraysr
   r   r   r   r   r   r   rX   rY   rf   r   ZndarrayZCategoricalr   ZPeriodIndexcorerV   ZPeriodDtypeZIntervalIndexZfrom_breaksparamr   ZTimedeltaIndexrd   ri   rj   ZarraysZperiod_arrayr   r|   r   r6   rL   ZNAZIntervalr   r   r   ZNaTZ
datetime64r   r   rU   r   r   r   r   r   r   r   r   <module>   s"   
 

(
	
 
& &  



4
 &

	" 
