3
UdT                 @   sF  d dl mZ d dlZ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	Z
d dlZd dlmZmZ d dljjZd dlZd dlmZmZmZmZmZmZ d dljZej ZeeZ e j! Z"dgd d	gd  d
gd  dge#e"d   Z$ej%e$dde"_&e'e(e$e"d< e
j)e#e"dde"d< dd Z*ej+j,dG dd dZ-dS )    )OrderedDictN)	timedelta)StringIO)is_platform_32bitis_platform_windows)	DataFrameDatetimeIndexSeries	Timestampcompat	read_jsonZbah   barbazfoo   E)nameint64)dtypesortc             C   sD   |dks|dkr|j dd}|dkr4tt|j|_tj| | d S )NrecordsvaluesT)drop)reset_indexrangelencolumnstmassert_frame_equal)resultexpectedorient r#   T/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/io/json/test_pandas.pyassert_json_roundtrip_equal   s
    r%   z6ignore:the 'numpy' keyword is deprecated:FutureWarningc               @   s  e Zd Zejdddd Zejdd Zejdd Zd	d
 Zej	j
ddddgdd Zej	j
dddgdd Zej	j
dddgej	j
dddgddggddgddggddgddgged dged!dgggd"d# Zej	j
ddddgd$d% Zd&d' Zej	j
d(d)egej	j
d*dd)gej	j
d+dd)gd,d- Zej	j
d(d)ejgej	j
d*dd)gej	j
d+dd)gd.d/ Zej	j
d(d0ejed1gej	j
d*dd)gej	j
d+dd)gd2d3 Zej	j
d*dd)gej	j
d+dd)gd4d5 Zej	j
d*dd)gej	j
d+dd)gd6d7 Zej	j
d*dd)gej	j
d+dd)gd8d9 Zej	j
d*dd)gej	j
d+dd)gd:d; Zej	j
d<dOdPdQdRgdEdF Zej	j
d(dd)gej	j
d*dd)gej	j
d+dd)gdGdH Zej	j
dIejej gej	j
d(dd)gdJdK Z!ej	j"e# dLdMej	j
dNdSdTdWdXdYdZgdXdY Z$dZd[ Z%d\d] Z&d^d_ Z'd`da Z(dbdc Z)ddde Z*dfdg Z+dhdi Z,djdk Z-dldm Z.ej	j
d+dd)gdndo Z/ej	j
d(d)d0gej	j
d+dd)gdpdq Z0ej	j
d+dd)gdrds Z1ej	j
d+dd)gdtdu Z2ej	j
d(ejegej	j
d+dd)gdvdw Z3dxdy Z4dzd{ Z5d|d} Z6ej	j
d~de7dgddfd)e7dgfgdd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>ej	j
dddgej	j
ddd)gej	j
de?j@e?j?eAjgdd ZBej	j
ddddddddgdd ZCej	j
dd[d\d]d^d_gdd ZDdd ZEej	j
dd`dadbdcddgdd ZFdd ZGej	j
dddddgdd ZHdd ZIdd ZJdd ZKeLjMej	jNdd ZOeLjMej	jNej	j
ddeAjPddgddgdeAjPddggddń ZQddǄ ZRddɄ ZSej	j
ddd)gej	j
dddgej	j
deAjTeUgdd̄ ZVdd΄ ZWddЄ ZXdd҄ ZYddԄ ZZddք Z[dd؄ Z\ddڄ Z]ej	j
ded܃eddded߃gdd Z^ej	j
deAj_ddTdeAj_ddTddeAj_ddTdgdd Z`dd Zaebjcdd Zddd Zedd Zfej	j
degjhd egjhdT  gdd Ziej	j
degjhd egjhdT  gej	j"ejjk ddMdd Zldd Zmdd Zndd Zodd Zpej	j
dd0ddTgdPdRgddgd dgddggej	j
dddgd dgddggdd Zqdd Zrej	j
d(deedgd	d
 Zsdd Ztej	j
deuddTgddggddgdddgddTgddggdfeuddTgddggddgdjvdddgddTgddggdfeuddTgddggddgddgddggdddgddTgddggdfe7ddTdgdddddTdgdfe7ddTdgddjvddddTdgdfe7ddTgdddgddggddddTgdfgdd Zwej	j
deuddTgddggddgdeuddTgddggddgdjvdeuddTgddggddgddgddggde7ddTdgdde7ddTdgddjvde7ddTgdddgddggdgdd Zxej	j
dddddgdd Zyej	j
dddgej	j
ddd)gdd  Zzd!d" Z{ej	j
d#dedfgd&d' Z|ej	j
d(dgdhej}dd+ej	j~d,ej}dd+ej	j~d,gd-d. Zej	j
d/ddTdgd0d1 Zej	j
d(didjdkdldmdngd8d9 Zd:d; Zd<d= Zd>d? Zd@dA Zej	j
dBeAjuddTdgdddgdCdDfgdEdF ZdGdH ZdIdJ ZdKdL ZdMdN Zd0S (o  TestPandasContainerT)Zautousec             c   s   t j | _d V  d S )N)
_cat_framecopycategorical)selfr#   r#   r$   setup(   s    
zTestPandasContainer.setupc             C   s    t j }d|_|jjd |_|S )Nts)r   ZmakeTimeSeriesr   index
_with_freq)r*   serr#   r#   r$   datetime_series.   s    z#TestPandasContainer.datetime_seriesc             C   s   t tj }|jjd |_|S )N)r   r   ZgetTimeSeriesDatar-   r.   )r*   dfr#   r#   r$   datetime_frame7   s    z"TestPandasContainer.datetime_framec             C   sN   t ddgddggddgddgd	}t|j|d
|d
}|j }t||| d S )Nabcdz	index " 1z	index / 2za \ bzy / z)r-   r   )r"   )r   r   to_jsonr(   r%   )r*   r"   r1   r    r!   r#   r#   r$    test_frame_double_encoded_labels?   s    z4TestPandasContainer.test_frame_double_encoded_labelsr"   splitr   r   c             C   sN   t ddgddggddgddgd}t|j|d	|d	}|j }t||| d S )
Nr3   r4   r5   r6      xy)r-   r   )r"   )r   r   r7   r(   r%   )r*   r"   r1   r    r!   r#   r#   r$   test_frame_non_unique_indexK   s    "z/TestPandasContainer.test_frame_non_unique_indexr-   r   c          
   C   sX   t ddgddggddgddgd}d	| d
}tjt|d |j|d W d Q R X d S )Nr3   r4   r5   r6   r:   r;   r<   )r-   r   z+DataFrame index must be unique for orient='')match)r"   )r   pytestraises
ValueErrorr7   )r*   r"   r1   msgr#   r#   r$   "test_frame_non_unique_index_raisesS   s    "z6TestPandasContainer.test_frame_non_unique_index_raisesdatar3   r4   r5   r6   g      ?g      @g      @g      @r:      20130101Z20130102c             C   s   t |ddgddgd}t|j|d|dgd}|dkrtj |}|jd d df jd	kr|jd d df jtjd
 |jd d df< n|dkr|}t	j
|| d S )Nr:      r;   )r-   r   )r"   )r"   convert_datesr   r   zdatetime64[ns]i@B r9   )r   r   r7   pdilocr   astypenpr   r   r   )r*   r"   rE   r1   r    r!   r#   r#   r$   test_frame_non_unique_columnsZ   s    
.z1TestPandasContainer.test_frame_non_unique_columnsc          
   C   sX   t ddgddggddgddgd}d	| d
}tjt|d |j|d W d Q R X d S )Nr3   r4   r5   r6   r:   rH   r;   )r-   r   z-DataFrame columns must be unique for orient='r>   )r?   )r"   )r   r@   rA   rB   r7   )r*   r"   r1   rC   r#   r#   r$   $test_frame_non_unique_columns_raisesw   s    "z8TestPandasContainer.test_frame_non_unique_columns_raisesc             C   s   |j  |j ddkstd S )Nr   )r"   )r7   AssertionError)r*   float_framer#   r#   r$   test_frame_default_orient   s    z-TestPandasContainer.test_frame_default_orientr   Fconvert_axesnumpyc       	      C   s4   |j |d}tj|||||d}|}t||| d S )N)r"   )r"   rS   rT   r   )r7   rJ   r   r%   )	r*   r"   rS   rT   r   rQ   rE   r    r!   r#   r#   r$   test_roundtrip_simple   s
    z)TestPandasContainer.test_roundtrip_simplec       	      C   s^   |j |d}tj|||||d}|}|rNt s4t rN| rN|dkrN|jtj}t||| d S )N)r"   )r"   rS   rT   r   r9   )	r7   rJ   r   r   r   rL   rM   Zint32r%   )	r*   r"   rS   rT   r   	int_framerE   r    r!   r#   r#   r$   test_roundtrip_intframe   s    z+TestPandasContainer.test_roundtrip_intframeNU3c       	      C   s   t tjddd tdD dd tdD |d}|rP|dkrP|dkrPtjd	 |j|d
}tj|||||d}|j	 }|s|j
tj}|r|dkr|jj
tj|_|jj
tj|_n|dkr|r|jj
tj|_t||| d S )N      c             S   s   g | ]}t |qS r#   )str).0ir#   r#   r$   
<listcomp>   s    z?TestPandasContainer.test_roundtrip_str_axes.<locals>.<listcomp>c             S   s   g | ]}t |qS r#   )r[   )r\   r]   r#   r#   r$   r^      s    )r   r-   r   rX   r9   zCan't decode directly to array)r"   )r"   rS   rT   r   r-   r   r   )rY   rZ   )r9   r-   r   )r   rM   Zzerosr   r@   xfailr7   rJ   r   r(   rL   r   r   r-   r%   )	r*   r"   rS   rT   r   r1   rE   r    r!   r#   r#   r$   test_roundtrip_str_axes   s&    
z+TestPandasContainer.test_roundtrip_str_axesc             C   s   |dkrt jd| d | jj|d}|rF|dkrFt jd| d	 tj||||d
}| jj }|jjt	|_d |j_
| r|dkr|j }t||| d S )Nr-   r   z.Can't have duplicate index values for orient 'z'))r"   r   r   zOrient z is broken with numpy=True)r"   rS   rT   )r-   r   )r   r   )r@   r_   r)   r7   rJ   r   r(   r-   rL   r[   r   
sort_indexr%   )r*   r"   rS   rT   rE   r    r!   r#   r#   r$   test_roundtrip_categorical   s    
z.TestPandasContainer.test_roundtrip_categoricalc             C   sz   |j |d}tj||||d}|j }|rF|jjt|_|jjt|_|rj|dkrj|jdgddj	dd}t
j|| d S )	N)r"   )r"   rS   rT   r   r   r:   )axisT)r   )r7   rJ   r   r(   r-   rL   floatr   reindexr   r   r   )r*   r"   rS   rT   Zempty_framerE   r    r!   r#   r#   r$   test_roundtrip_empty   s    z(TestPandasContainer.test_roundtrip_emptyc       	      C   sd   |j |d}tj||||d}|j }|sT|jjtjd }|dkrN|jt}||_t	||| d S )N)r"   )r"   rS   rT   i@B r9   )
r7   rJ   r   r(   r-   rL   rM   r   r[   r%   )	r*   r"   rS   rT   r2   rE   r    r!   idxr#   r#   r$   test_roundtrip_timestamp   s    
z,TestPandasContainer.test_roundtrip_timestampc       
      C   s   |r|dkrt jd tjdddddg}dd	d
ddgdd	dd	dgdddddgdddddgd}t||d}|j|d}tj||||d}|j }	|	jf |	j	dj
tj}	| r|dkr|	j }	t||	| d S )Nr9   zCan't decode directly to arrayr3   r4   r5   r6   eg        g      ?g       @g      @g      @Zfoo1Zfoo2Zfoo3Zfoo4Zfoo5TF)ABCD)rE   r-   )r"   )r"   rS   rT   numberr-   )r@   r_   rJ   Indexr   r7   r   r(   ZassignZselect_dtypesrL   rM   r   ra   r%   )
r*   r"   rS   rT   r-   r   r1   rE   r    r!   r#   r#   r$   test_roundtrip_mixed  s     
z(TestPandasContainer.test_roundtrip_mixedzdata,msg,orient{"key":b:a:d}Expected object or valueO{"columns":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}:Shape of passed values is \(3, 2\), indices imply \(2, 2\)W{"columns":["A","B","C"],"index":["1","2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}+3 columns passed, passed data had 2 columnsN{"badkey":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}unexpected key\(s\): badkeyc             C   s.   t jt|d tt||d W d Q R X d S )N)r?   )r"   )r@   rA   rB   r   r   )r*   rE   rC   r"   r#   r#   r$   $test_frame_from_json_bad_data_raises$  s    z8TestPandasContainer.test_frame_from_json_bad_data_raisesc             C   s   t ddgdddgg}t|j|d|||d}tj|jd sBtt d	d
gdddgg}t|j|d|||d}|s|jd d kstntj|jd std S )Nr:   rH   rZ   r      )r"   )r"   rS   r   r   12456)r   rH   )r   rH   )r   rH   )r   r   r7   rM   isnanrK   rP   )r*   r"   rS   rT   r   Znum_dfr    Zobj_dfr#   r#   r$   !test_frame_from_json_missing_dataF  s     

z5TestPandasContainer.test_frame_from_json_missing_datainfc             C   sH   t ddgdddgg}||jd< t|j |d}tj|jd	 sDtd S )
Nr:   rH   rZ   r   rz   r   )r   )r   rH   )r   rH   )r   locr   r7   rM   r   rK   rP   )r*   r"   r   r   r1   r    r#   r#   r$   test_frame_infinity_  s    
z'TestPandasContainer.test_frame_infinityz$not compliant on 32-bit, xref #15865)reasonzvalue,precision,expected_valffffff?      ?333333?       @ףp=
?rH   Cl??r   c             C   s6   t jt|dg}|j|d}|d| dks2td S )N)Za_float)Zdouble_precisionz{"a_float":{"0":z}})rJ   r   dictr7   rP   )r*   valueZ	precisionZexpected_valr1   encodedr#   r#   r$   "test_frame_to_json_float_precisioni  s    z6TestPandasContainer.test_frame_to_json_float_precisionc          
   C   s<   t dddg}d}tjt|d |jdd W d Q R X d S )Nr:   rH   rF   z+Invalid value 'garbage' for option 'orient')r?   garbage)r"   )r   r@   rA   rB   r7   )r*   r1   rC   r#   r#   r$   test_frame_to_json_except|  s    z-TestPandasContainer.test_frame_to_json_exceptc             C   sj   t ddgd}|j sttjt|j t|jd|dd t	j dg ig djd	d
}d}||ksftd S )Njimjoe)r   )r   F)check_index_typetest)r-   r   )r"   z{"test":{}})
r   _is_mixed_typerP   r   r   r   r7   r   dtypesrJ   )r*   r1   r    r!   r#   r#   r$   test_frame_empty  s    z$TestPandasContainer.test_frame_emptyc             C   sP   t ddgd}|d jd|d< |js*ttjt|j t|j	d|dd d S )Nr   r   )r   i8)r   F)r   )
r   rL   r   rP   r   r   r   r7   r   r   )r*   r1   r#   r#   r$   test_frame_empty_mixedtype  s
    
z.TestPandasContainer.test_frame_empty_mixedtypec             C   s  dddddgdddd	d
gdddddgdddddgg}t |tddddddgd}|jsZt|j }x2d$D ]*}|j|d}t||d d!}tj|| qhW t	j
t||_|jd"d}t|d"d d!}tj|| t	j
|jd |_|jd#d}t|d#d d!}tj|| d S )%N
   r:   r   g?g{Gz?   rH   r   g?g{Gz?   rF   r   g333333?gQ?(   rZ   quxg?g{Gz?ZabcdZ1stZ2ndZ3rdZ4thZ5th)r-   r   r9   r-   r   )r"   F)r"   rS   r   r   )r9   r-   r   )r   listr   rP   r(   r7   r   r   r   rM   aranger   r-   shaper   )r*   valsr1   rightr"   inpleftr#   r#   r$   test_frame_mixedtype_orient  s(    

z/TestPandasContainer.test_frame_mixedtype_orientc       
   	   C   s  t jdd}t jtj|d d}tdddd)gd*d+d,d-gdddd.gd/ddd0gdd1ddggddddg|d}t jd|d< t jd|jd |jj	df< |d |d!< t j
|jd"|jj	d!f< |d#d$d%}tjj|d&}t j|}tj|| |jd!gd"d'}tjj|d(}t j|}	tj||	 d S )2Nz
2000-01-03z
2000-01-07)freqgÉ?gz~Kc?gX7?gH/?g|R?gX?gsBf?g(?g<1=?g9?gg??gLł
?gJQ?g[r?T?gj<DH>?g-?gIEx?gW!i`y@gP04?g+]5?rj   rk   rl   rm   )r   r-   z19920106 18:21:32.12daterG   rF   modifiedr:   iojsonrE   ztsframe_v012.json)rc   ztsframe_iso_v012.jsongH/ƿg|RпgXgsBfg(ƿgLł
gJQg-ѿgW!i`y)rJ   
date_ranger   rM   Zasarrayr   r
   rK   r   get_locNaTospathjoinr   r   r   r   )
r*   Zdatapathdtir1   dirpathZv12_jsonZdf_unserZdf_isoZv12_iso_jsonZdf_unser_isor#   r#   r$   test_v12_compat  s,    






z#TestPandasContainer.test_v12_compatc             C   s   t jdddd}t jt|d d}ttdIddd	dJdddKddLg
ddddddddddg
ddddddd d!d"d#g
dMdNd&dOdPd)d*d+dQd-g
d.d/d0d1d2d3d4d5d6d7g
d8d9d:d;d<d=d>d?d@dAg
dB|dC}|jjdD|_t j|j	dEdFdEdF}t
j||dGdGdGdGdH d S )RNZ20000101r   H)periodsr   )r   g}S? w?gbm?gz(~J	?g1?gk*M?gvTj?g7j	" Y?gp+KS(@g񒬁?gZtSy?iL,i_}i4ziKeiL&i%giDiY)L i;eiD Z78c608f1Z64a99743Z13d2ff52Zca7f4af2Z97236474Zbde7e214Z1a6bde47Zb1190be5Z7a669144Z8d64d068gD!?gIxJ ?g%
@gP\<?g?gPl?gFzn?g5mH/?gpH%?gI?Z14f04af9Zd085da90Z4bcfac83Z81504cafZ2ffef4a9Z08e2f5c4Z07e1af03Zaddbd4a7Z1f6a09baZ4bfc4d87i/iiYi6iI i;>i	i( i0q{iѪ)Zfloat_1Zint_1Zstr_1Zfloat_2Zstr_2Zint_2)r-   unicoder9   )r"   T)r   check_column_typeZ	by_blocksZcheck_exactg}S? wgk*Mgp+KS(gZtSygD!gIxJ gP\<g޿gpH%)rJ   r   r   r   r   r   r   rL   r   r7   r   r   )r*   r-   df_mixedZdf_roundtripr#   r#   r$   test_blocks_compat_GH9037  s    z-TestPandasContainer.test_blocks_compat_GH9037c       
      C   s   G dd d}d}||}t d|jgi}|j d| dksBtt d|gi}d}tjt|d |j  W d Q R X t |gd	gd
ddgd}tjt |j  W d Q R X |jtd}d| d}	||	kst|jtdd| dkstd S )Nc               @   s"   e Zd Zdd ZedddZdS )zFTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThingc             S   s   || _ tj|| _d S )N)hexedbytesfromhexbinary)r*   r   r#   r#   r$   __init__6  s    zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__)returnc             S   s   | j S )N)r   )r*   r#   r#   r$   __str__:  s    zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__N)__name__
__module____qualname__r   r[   r   r#   r#   r#   r$   BinaryThing5  s   r   Z574b4454ba8c5eb4f98a8f45rj   z{"A":{"0":"z"}}z6Unsupported UTF-8 sequence length when encoding string)r?   r:   )rj   rk   rk   )r   )default_handlerz"},"B":{"0":1}})r   r   r7   rP   r@   rA   OverflowErrorr[   )
r*   r   r   ZbinthingZdf_printableZdf_nonprintablerC   r   r    r!   r#   r#   r$   test_frame_nonprintable_bytes2  s"    
z1TestPandasContainer.test_frame_nonprintable_bytesc             C   s>   t jdd dgddgij }ddd  d}||ks:td S )Nr   i r:   r   i9  z{"z":{"0":1},"foo":{"0":1337}})rJ   r   r7   rP   )r*   r    r!   r#   r#   r$   test_label_overflowX  s    z'TestPandasContainer.test_label_overflowc             C   s   t ddgddgd}d}tjt|d |jdd W d Q R X tj|t|jd	dd	d
d t|jdddd
d}tj|j	|j	 d S )Nr3   r4   r:   )r-   z.Series index must be unique for orient='index')r?   r-   )r"   r9   series)r"   typr   )
r	   r@   rA   rB   r7   r   assert_series_equalr   Zassert_numpy_array_equalr   )r*   srC   Zunserr#   r#   r$   test_series_non_unique_index^  s    z0TestPandasContainer.test_series_non_unique_indexc             C   s   |j  |j ddkstd S )Nr-   )r"   )r7   rP   )r*   string_seriesr#   r#   r$   test_series_default_orientk  s    z.TestPandasContainer.test_series_default_orientc             C   sT   |j |d}tj|d||d}|}|d	kr6|jdd}|dkrDd |_tj|| d S )
N)r"   r   )r   r"   rT   r   r   T)r   r9   )r   r   )r7   rJ   r   r   r   r   r   )r*   r"   rT   r   rE   r    r!   r#   r#   r$   test_series_roundtrip_simplen  s    z0TestPandasContainer.test_series_roundtrip_simplec             C   sV   |j |d}tj|d|||d}|}|d	kr8|jdd}|dkrFd |_tj|| d S )
N)r"   r   )r   r"   rT   r   r   r   T)r   r9   )r   r   )r7   rJ   r   r   r   r   r   )r*   r"   rT   r   Zobject_seriesrE   r    r!   r#   r#   r$   test_series_roundtrip_object{  s    z0TestPandasContainer.test_series_roundtrip_objectc             C   sV   |j |d}tj|d||d}|}|dkr8|jdd}n|jjt|_tj|| d S )	N)r"   r   )r   r"   rT   r   r   T)r   )r   r   )	r7   rJ   r   r   r-   rL   rd   r   r   )r*   r"   rT   Zempty_seriesrE   r    r!   r#   r#   r$   test_series_roundtrip_empty  s    z/TestPandasContainer.test_series_roundtrip_emptyc             C   sT   |j |d}tj|d||d}|}|d	kr6|jdd}|dkrDd |_tj|| d S )
N)r"   r   )r   r"   rT   r   r   T)r   r9   )r   r   )r7   rJ   r   r   r   r   r   )r*   r"   rT   r0   rE   r    r!   r#   r#   r$    test_series_roundtrip_timeseries  s    z4TestPandasContainer.test_series_roundtrip_timeseriesc             C   sf   t tdddddddgd}|j|d	}tj|d
||d}|j }|dkrV|jdd}tj|| d S )Nrz   r3   r4   r5   r6   ri   f)r-   )r"   r   )r   r"   rT   r   r   T)r   )r   r   )	r	   r   r7   rJ   r   r(   r   r   r   )r*   r"   rT   r   r   rE   r    r!   r#   r#   r$   test_series_roundtrip_numeric  s    z1TestPandasContainer.test_series_roundtrip_numericc          
   C   s<   t dddg}d}tjt|d |jdd W d Q R X d S )Nr:   rH   rF   z+Invalid value 'garbage' for option 'orient')r?   r   )r"   )r	   r@   rA   rB   r7   )r*   r   rC   r#   r#   r$   test_series_to_json_except  s    z.TestPandasContainer.test_series_to_json_exceptc             C   s4   t dddg}t|j ddd}tj||dd d S )Ng=
ףp=@r   T)r   precise_floatF)r   )r	   r   r7   r   r   )r*   r   r    r#   r#   r$   #test_series_from_json_precise_float  s    z7TestPandasContainer.test_series_from_json_precise_floatc             C   s@   t dddg}t|j dtjd}t dgd }tj|| d S )Ng=
ףp=@r   )r   r   rZ   rF   )r	   r   r7   rM   r   r   r   )r*   r   r    r!   r#   r#   r$   test_series_with_dtype  s    z*TestPandasContainer.test_series_with_dtypezdtype,expectedz
2000-01-01zdatetime64[ns])r   l    ,Uqc             C   s6   t dgdd}|j }tj|d|d}tj|| d S )Nz
2000-01-01zdatetime64[ns])r   r   )r   r   )r	   r7   rJ   r   r   r   )r*   r   r!   r   rE   r    r#   r#   r$   test_series_with_dtype_datetime  s    z3TestPandasContainer.test_series_with_dtype_datetimec             C   s>   t dddgdddgg}t|j dd}tj||ddd d S )Ng=
ףp=@T)r   F)r   r   )r   r   r7   r   r   )r*   r1   r    r#   r#   r$   "test_frame_from_json_precise_float  s    z6TestPandasContainer.test_frame_from_json_precise_floatc             C   s>   t tdddddddgdd	}t|j d d
}tj|| d S )Nrz   r3   r4   r5   r6   ri   r   r   )r-   r   )r   )r	   r   r   r7   r   r   )r*   r   r    r#   r#   r$   test_typ  s    zTestPandasContainer.test_typc             C   sp   t dddgdddgg}t|j }tj|| t dddgdddgddd	d
gd}t|j }tj|| d S )Nr:   rH   rF   rZ   r   rz   )r3   r4   rj   rk   rl   )r-   )r   r   r7   r   r   )r*   r1   r    r#   r#   r$   test_reconstruction_index  s    $z-TestPandasContainer.test_reconstruction_indexc          
   C   s@   t jd,}x$|||gD ]}|j| t| qW W d Q R X d S )Nz	test.json)r   ensure_cleanr7   r   )r*   rQ   rV   r2   r   r1   r#   r#   r$   	test_path  s    

zTestPandasContainer.test_pathc             C   sR   |j  }t|}tj|| |j  }t|dd}tj||dd |jd ksNtd S )Nr   )r   F)Zcheck_names)r7   r   r   r   r   r   rP   )r*   r0   r2   r   r    r#   r#   r$   test_axis_dates  s    z#TestPandasContainer.test_axis_datesc             C   s   |}t d|d< |j }t|}tj|| d|d< |jdd}t|dd}|j }|d jjd	|d< |d jd
|d< tj|| t	t d|j
d}|j }t|dd}tj|| d S )NrG   r   g      ?r   ns)	date_unitF)rI   r   r   )r-   r   )r   )r
   r7   r   r   r   r(   r   viewrL   r	   r-   r   )r*   r0   r2   r1   r   r    r!   r,   r#   r#   r$   test_convert_dates   s     z&TestPandasContainer.test_convert_datesdate_formatepochiso	as_objectdate_typc             C   sn   |ddddt jg}|r"|jd t j||d}|j|d}|dkrJd}nd	}|r^|jd
d}||ksjtd S )Ni  r:   )yearmonthdayr3   )r-   )r   r   z+{"1577836800000":1577836800000,"null":null}zC{"2020-01-01T00:00:00.000Z":"2020-01-01T00:00:00.000Z","null":null}}z	,"a":"a"})rJ   r   appendr	   r7   replacerP   )r*   r   r   r   rE   r/   r    r!   r#   r#   r$   test_date_index_and_values  s    
z.TestPandasContainer.test_date_index_and_values
infer_wordZ
trade_timer   datetimeZsold_atr   	timestampZ
timestampsc             C   sf   ddl m} dd|diddig}tdtdgdtjggd|gd}t||d|g }tj|| d S )	Nr   )dumpsidr:   l    $ArH   z
2002-11-08)r   )	pandas.io.jsonr   r   r
   rJ   r   r   r   r   )r*   r   r   rE   r!   r    r#   r#   r$   test_convert_dates_infer2  s     z,TestPandasContainer.test_convert_dates_inferzdate,date_unit20130101 20:43:42.12320130101 20:43:42r   ms20130101 20:43:42.123456us20130101 20:43:42.123456789r   c             C   s   |}t ||d< tj|jd|jjdf< tj|jd|jjdf< |rT|jd|d}n|jdd}t|}|j }|j	j
d|_	|d jj
d|d< tj|| d S )Nr   r:   r   r   )r   r   )r   UTC)r
   rJ   r   rK   r   r   r7   r   r(   r-   tz_localizedtr   r   )r*   r   r   r2   r1   r   r    r!   r#   r#   r$   test_date_format_frameI  s    z*TestPandasContainer.test_date_format_framec             C   s4   |}d}t jt|d |jddd W d Q R X d S )Nz*Invalid value 'foo' for option 'date_unit')r?   r   r   )r   r   )r@   rA   rB   r7   )r*   r2   r1   rC   r#   r#   r$   test_date_format_frame_raisesc  s    z1TestPandasContainer.test_date_format_frame_raisesc             C   s   t t||jd}tj|jd< tj|jd< |r>|jd|d}n|jdd}t|dd}|j }|jj	d	|_|j
j	d	}tj|| d S )
N)r-   r:   r   r   )r   r   )r   r   )r   r  )r	   r
   r-   rJ   r   rK   r7   r   r(   r  r  r   r   )r*   r   r   r0   r,   r   r    r!   r#   r#   r$   test_date_format_seriesi  s    z+TestPandasContainer.test_date_format_seriesc             C   sB   t td|jd}d}tjt|d |jddd W d Q R X d S )Nz20130101 20:43:42.123)r-   z*Invalid value 'foo' for option 'date_unit')r?   r   r   )r   r   )r	   r
   r-   r@   rA   rB   r7   )r*   r0   r,   rC   r#   r#   r$   test_date_format_series_raises  s    z2TestPandasContainer.test_date_format_series_raisesunitc             C   s   |}t d|d< |jjd}t d|jd|f< t d|jd|f< tj|jd|f< |jd|d	}t||d
}tj	|| t|d d
}tj	|| d S )Nz20130101 20:43:42r   z19710101 20:43:42r:   z21460101 20:43:42rH   rZ   r   )r   r   )r   )
r
   r   r   rK   rJ   r   r7   r   r   r   )r*   r  r2   r1   dlr   r    r#   r#   r$   test_date_unit  s    z"TestPandasContainer.test_date_unitc             C   s   d}t | d S )Nad  {
        "status": "success",
        "data": {
        "posts": [
            {
            "id": 1,
            "title": "A blog post",
            "body": "Some useful content"
            },
            {
            "id": 2,
            "title": "Another blog post",
            "body": "More content"
            }
           ]
          }
        })r   )r*   r   r#   r#   r$   test_weird_nested_json  s    z*TestPandasContainer.test_weird_nested_jsonc             C   sx   t tjjddtdd}td|d< td|d< d|d	< tjddd
|_	|j
 }t|tjtjdd}tj|| d S )Nr   rH   ZAB)r   rG   r   intsTbools)r   )r  r  )r   )r   rM   randomrandnr   r
   r   rJ   r   r-   r7   r   r   Zbool_r   r   )r*   Zdfj2r   r    r#   r#   r$   test_doc_example  s    z$TestPandasContainer.test_doc_examplec             C   s   t ddd}tddgddggddgd}d	}tjt|d
 tj||dd W d Q R X t d}tddgddggddgd}tj|| d S )Nz#[{"a": 1, "b": 2}, {"b":2, "a" :1}]T)rT   r:   rH   r3   r4   )r   zDataFrame\.index are different

DataFrame\.index values are different \(100\.0 %\)
\[left\]:  Index\(\['a', 'b'\], dtype='object'\)
\[right\]: RangeIndex\(start=0, stop=2, step=1\))r?   F)r   )r   r   r@   rA   rP   r   r   )r*   r    r!   	error_msgr#   r#   r$   test_misc_example  s    z%TestPandasContainer.test_misc_examplec             C   s>   d}t j|}|j }t j|}tj|j|j|jd| d S )Nz<https://raw.github.com/hayd/lahman2012/master/csvs/Teams.csv)r-   r   )	rJ   Zread_csvr7   r   r   r   re   r-   r   )r*   csvr1   r   r    r#   r#   r$   test_round_trip_exception_  s
    

z.TestPandasContainer.test_round_trip_exception_zfield,dtypeZ
created_atr  )tzZ	closed_atZ
updated_atc             C   s&   d}t |dd}|| j|ks"td S )Nz@https://api.github.com/repos/pandas-dev/pandas/issues?per_page=5T)rI   )r   r   rP   )r*   fieldr   urlr    r#   r#   r$   test_url  s    zTestPandasContainer.test_urlc             C   s^  dd }t tdtddg}|jdks,ttj|j ddj|}tj	|| t tdtddgtj
d	d
gd}|jdksttj|j ddj|}tj	|| ttdtddg}|d	 jdksttj|tj|j j| ttddtddgd
dgtjdddd}tj|jdd}tj|jdd|d< tj|j|d< tj|| d S )Nc             S   s   t j| ddS )Nr   )r  )rJ   to_timedelta)r;   r#   r#   r$   <lambda>  s    z4TestPandasContainer.test_timedelta.<locals>.<lambda>   r   )secondsztimedelta64[ns]r   )r   r   r:   )r-   )daysrH   rG   )startr   )r3   r4   r5   r   )r   )r  r3   r5   )r	   r   r   rP   rJ   r   r7   applyr   r   ro   r   r   r   r  r3   to_datetimer5   )r*   	converterr   r    framer#   r#   r$   test_timedelta  s(    $z"TestPandasContainer.test_timedeltac             C   sx   t dtdtjdgitd}t dtj|jd jtj|jd jgi}tj|j	dddd	id}t
j||d
d d S )Nr3   r  rG   )r   r   r:   r   )r   r   F)r   )r   r   rJ   r
   object	Timedeltar3   r   r   r7   r   r   )r*   r"  r!   r    r#   r#   r$   test_mixed_timedelta_datetime  s    *z1TestPandasContainer.test_mixed_timedelta_datetimetimedelta_typc             C   sr   |dd|ddt jg}|r&|jd t j||d}|dkrBd}nd}|rV|jd	d
}|j|d}||ksntd S )Nr:   )r  rH   r3   )r-   r   zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}r   z	,"a":"a"})r   )rJ   r   r   r	   r   r7   rP   )r*   r   r   r'  rE   r/   r!   r    r#   r#   r$   test_timedelta_to_json  s    
z*TestPandasContainer.test_timedelta_to_jsonc             C   sP   t  }tdd|gi}tddt|gi}tj|jtd}tj||dd d S )Nr3      )r   F)r   )r$  r   r[   rJ   r   r7   r   r   )r*   r   r"  r!   r    r#   r#   r$   test_default_handler'  s
    z(TestPandasContainer.test_default_handlerc             C   sb   ddl m} dd }dtddtddgtd
d dgdddgdg}d}|||dd|ks^td S )Nr   )r   c             S   s(   t | tr dd| jfd| jfgS t| S )NmathjsComplexreZim)r+  r,  )
isinstancecomplexrealimagr[   )objr#   r#   r$   default1  s    
zBTestPandasContainer.test_default_handler_indirect.<locals>.default	   r:   ZSTRrZ   r   nanzN/A)r3   r4   r3   r4   )r   zR[9,[[1,null],["STR",null],[[["mathjs","Complex"],["re",4.0],["im",-5.0]],"N\/A"]]]r   )r   r"   )r   r   r   r/  rd   rP   )r*   r   r3  Zdf_listr!   r#   r#   r$   test_default_handler_indirect.  s    z1TestPandasContainer.test_default_handler_indirectc             C   sP   t ddtddgtdd tddgdd	d
gd}d}|jtdd|ksLtd S )Nr:   gffffff@rZ   r   r5  g333333?r   )r3   r4   r3   r4   )r   zE[["(1+0j)","(nan+0j)"],["(2.3+0j)","(nan+0j)"],["(4-5j)","(1.2+0j)"]]r   )r   r"   r6  )r   r/  rd   r7   r[   rP   )r*   r1   r!   r#   r#   r$   ,test_default_handler_numpy_unsupported_dtypeC  s
    $z@TestPandasContainer.test_default_handler_numpy_unsupported_dtypec                s   d  fdd}t jt d" tdddt gij|d W d Q R X t jt d& tdddtd	dgij|d W d Q R X d S )NZraisinc                s   t  d S )N)	TypeError)r2  )rC   r#   r$   my_handler_raisesS  s    zJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raises)r?   r3   r:   rH   )r   rZ   r   r6  )r@   rA   r9  r   r$  r7   r/  )r*   r:  r#   )rC   r$   test_default_handler_raisesP  s    z/TestPandasContainer.test_default_handler_raisesc          	   C   sx   t ddddddddgi}|d |d< |j }|d jd|d< ||j ksPt|d }|d }|j |j ksttd S )Nrj   r3   r4   r5   rk   category)r   r7   rL   rP   )r*   r1   r!   r   Zscr#   r#   r$   test_categorical_  s    z$TestPandasContainer.test_categoricalc             C   s   t jdddd}|jdjd }t|t jdddd}|j }||d< |j }||j ks`tt|}t|}|j |j kstd S )	NrG   rF   z
US/Eastern)r   r  utc)r   )rj   rk   rj   )	rJ   r   Z
tz_convertr  r   r(   r7   rP   r	   )r*   tz_rangeZtz_naiver1   Zdf_naiver!   ZstzZs_naiver#   r#   r$   test_datetime_tzl  s    z$TestPandasContainer.test_datetime_tzc             C   s   t jtjjdd}tj|jd d< |jd}|j }||j ksFt	t j
tjjd}tj|jd d< |jd}|j }||j kst	d S )Nr   rZ      ZSparse)rJ   r   rM   r  r  r5  r   rL   r7   rP   r	   )r*   r1   Zsdfr!   r   ssr#   r#   r$   test_sparse|  s    

zTestPandasContainer.test_sparser,   z2013-01-10 05:00:00Zz2013-01-10 00:00:00z
US/Easternz2013-01-10 00:00:00-0500c             C   sD   ddl m} d}||dd|ks$t|j }||dd|ks@td S )Nr   )r   z"2013-01-10T05:00:00.000Z"T)	iso_dates)r   r   rP   Zto_pydatetime)r*   r,   r   expr  r#   r#   r$   test_tz_is_utc  s
    	z"TestPandasContainer.test_tz_is_utcr?  z2013-01-01 05:00:00Z)r   z2013-01-01 00:00:00)r   r  z2013-01-01 00:00:00-0500c             C   sn   ddl m} d}d}||dd|ks(ttj|}||dd|ksFttd|i}||dd}||ksjtd S )Nr   )r   z7["2013-01-01T05:00:00.000Z","2013-01-02T05:00:00.000Z"]zF{"DT":{"0":"2013-01-01T05:00:00.000Z","1":"2013-01-02T05:00:00.000Z"}}T)rD  ZDT)r   r   rP   rJ   r   r   )r*   r?  r   rE  Zdfexpr   r1   r    r#   r#   r$   test_tz_range_is_utc  s    	
z(TestPandasContainer.test_tz_range_is_utcc             C   s8   t ddd}tddgddggddgd}tj|| d S )	Nz!{"a": 1, "b": 2}
{"b":2, "a" :1}
T)linesr:   rH   r3   r4   )r   )r   r   r   r   )r*   r    r!   r#   r#   r$   test_read_inline_jsonl  s    z*TestPandasContainer.test_read_inline_jsonlc             C   s8   t ddd}tddgddggddgd}tj|| d S )	Nzs3n://pandas-test/items.jsonlT)rH  r:   rH   r3   r4   )r   )r   r   r   r   )r*   s3_resourcer    r!   r#   r#   r$   test_read_s3_jsonl  s    z&TestPandasContainer.test_read_s3_jsonlc             C   sn   t jdZ}t|d}|jd W d Q R X t|dd}tddgddggdd	gd
}t j|| W d Q R X d S )Nztmp_items.jsonwz!{"a": 1, "b": 2}
{"b":2, "a" :1}
T)rH  r:   rH   r3   r4   )r   )r   r   openwriter   r   r   )r*   r   infiler    r!   r#   r#   r$   test_read_local_jsonl  s    z)TestPandasContainer.test_read_local_jsonlc             C   s|   d}t |}t|dd}tddgddggddgd	}tj|| d}t|dd}tddgddggddgd	}tj|| d S )
Nu5   {"a": "foo”", "b": "bar"}
{"a": "foo", "b": "bar"}
T)rH  u   foo”r   r   r3   r4   )r   )r   r   r   r   r   )r*   r   r    r!   r#   r#   r$   test_read_jsonl_unicode_chars  s    z1TestPandasContainer.test_read_jsonl_unicode_charsbigNumc             C   sp   t |tdgd}|j }dt| d }||ks4tt|tdgdgd}|j }dt| d }||ksltd S )	N	articleId)r   r-   z{"articleId":r   r   )r   r-   r   z{"0":{"articleId":z}})r	   r$  r7   r[   rP   r   )r*   rR  r   r   r!   r1   r#   r#   r$   test_to_json_large_numbers  s    z.TestPandasContainer.test_to_json_large_numberszGH-35279c             C   s   t |tdgd}dt| d }tjt" t|}t|}tj	|| W d Q R X t
|tdgdgd}dt| d }tjt" t|}t|}tj|| W d Q R X d S )	NrS  )r   r-   z{"articleId":r   r   )r   r-   r   z{"0":{"articleId":z}})r	   r$  r[   r@   rA   rB   r   r   r   r   r   r   )r*   rR  r   r   r    r1   r#   r#   r$   test_read_json_large_numbers  s    z0TestPandasContainer.test_read_json_large_numbersc             C   sh   d}t |}t|dd}tddgd}tj|| d}t |}t|}tddgdgd	}tj|| d S )
Nz'{"articleId": "1404366058080022500245"}r   )r   gg_SDrS  )r-   z.{"0": {"articleId": "1404366058080022500245"}}r   )r-   r   )r   r   r	   r   r   r   r   )r*   r   r    r!   r#   r#   r$   test_read_json_large_numbers2  s    z1TestPandasContainer.test_read_json_large_numbers2c             C   s   t ddgddggddgd}|jddd}d	}||ks:tt d
dgddggddgd}|jddd}d}||kstttjtj|dd| t ddgddggddgd}|jddd}d}||ksttjtj|dd| d S )Nr:   rH   r3   r4   )r   r   T)r"   rH  z{"a":1,"b":2}
{"a":1,"b":2}zfoo}r   zfoo"z.{"a":"foo}","b":"bar"}
{"a":"foo\"","b":"bar"})rH  zfoo\za\z3{"a\\":"foo\\","b":"bar"}
{"a\\":"foo\"","b":"bar"})r   r7   rP   r   r   rJ   r   )r*   r1   r    r!   r#   r#   r$   test_to_jsonl  s    z!TestPandasContainer.test_to_jsonlc             C   s   t jd dddddgddddgdddddgdddddgddddgddddgd	ddddgtjdddgd	tjdddgg	}d
d |D }g }x0dtgD ]$}x|D ]}|jt||d qW qW ddd}x|D ]}|| qW d S )Nz3encoding not implemented in .to_json(), xref #13774s   E, 17       a   b   cs   EE, 17s   s   Ac             S   s   g | ]}d d |D qS )c             S   s$   g | ]}t |tr|jd n|qS )zlatin-1)r.  r   decode)r\   r;   r#   r#   r$   r^   2  s    zFTestPandasContainer.test_latin_encoding.<locals>.<listcomp>.<listcomp>r#   )r\   r<   r#   r#   r$   r^   2  s   z;TestPandasContainer.test_latin_encoding.<locals>.<listcomp>r<  )r   latin-1c             S   sD   t jd0}| j||d t||d}t j| |dd W d Q R X d S )Nz	test.json)encodingF)Zcheck_categorical)r   r   r7   r   r   )r   r^  r   Zretrr#   r#   r$   	roundtrip;  s    z:TestPandasContainer.test_latin_encoding.<locals>.roundtrip)r]  )r@   skiprM   r5  r$  r   r	   )r*   r   Zexamplesr   valr_  r   r#   r#   r$   test_latin_encoding!  s&    






z'TestPandasContainer.test_latin_encodingc             C   sN   t dtdgi}|jdddj }|j  |jdddj }||ksJtd S )Nr3   r:   T)r-   deep)r   r[   Zmemory_usagesumr7   rP   )r*   r1   Zsize_beforeZ
size_afterr#   r#   r$   "test_data_frame_size_after_to_jsonD  s
    z6TestPandasContainer.test_data_frame_size_after_to_jsonr{   r|   z1.z2.c             C   sD   t ddgddgg||d}|jdd}tj|dd}tj|| d S )Nr:   rH   rF   rZ   )r-   r   table)r"   )r   r7   rJ   r   r   r   )r*   r-   r   r!   dfjsonr    r#   r#   r$   .test_from_json_to_json_table_index_and_columnsN  s    zBTestPandasContainer.test_from_json_to_json_table_index_and_columnsc             C   sH   t jddgddgddgd}|jdd	}t j|dd	}tj|| d S )
Nr:   rH   g      @g      @r~   r   )r3   r4   r5   rf  )r"   )rJ   r   r7   r   r   r   )r*   r!   rg  r    r#   r#   r$   #test_from_json_to_json_table_dtypesY  s    z7TestPandasContainer.test_from_json_to_json_table_dtypes)r4   r5   c             C   s\   t jddgddgddgd}|jdd	}d
}tjt|d t j|d|d W d Q R X d S )Nr:   rH   g      @g      @r~   r   )r3   r4   r5   rf  )r"   z)cannot pass both dtype and orient='table')r?   )r"   r   )rJ   r   r7   r@   rA   rB   r   )r*   r   r1   rg  rC   r#   r#   r$   !test_read_json_table_dtype_raises`  s
    z5TestPandasContainer.test_read_json_table_dtype_raisesc             C   s`   t ddgddggddgddgd	}|jd
d}d}tjt|d tj|d
dd W d Q R X d S )Nr:   rH   rF   rZ   g      ?g       @z1.z2.)r-   r   rf  )r"   z0cannot pass both convert_axes and orient='table')r?   T)r"   rS   )r   r7   r@   rA   rB   rJ   r   )r*   r1   rg  rC   r#   r#   r$   (test_read_json_table_convert_axes_raisesi  s
    "z<TestPandasContainer.test_read_json_table_convert_axes_raiseszdata, expectedrZ   r   )r   )r   rE   r   )r   r-   rj   )r   )r   rE   )r   r-   c             C   s(   |j ddd}tj|}||ks$td S )Nr9   F)r"   r-   )r7   r   loadsrP   )r*   rE   r!   r    r#   r#   r$   test_index_false_to_json_splitq  s     
z2TestPandasContainer.test_index_false_to_json_splitc             C   sL   |j ddd}tj|}tjjj|ddt|jddd}||ksHtd S )Nrf  F)r"   r-   )r-   r   )r"   )ZschemarE   )	r7   r   rl  rJ   r   Zbuild_table_schemar   to_dictrP   )r*   rE   r    r!   r#   r#   r$   test_index_false_to_json_table  s
    
z2TestPandasContainer.test_index_false_to_json_tablec             C   sN   t jddgddggddgd}d}tjt|d	 |j|d
d W d Q R X d S )Nr:   rH   rZ   r   r3   r4   )r   z?'index=False' is only valid when 'orient' is 'split' or 'table')r?   F)r"   r-   )rJ   r   r@   rA   rB   r7   )r*   r"   r1   rC   r#   r#   r$   test_index_false_error_to_json  s    z2TestPandasContainer.test_index_false_error_to_jsonrf  c             C   s@   t ddgddgd}|j||d}t||d}tj|| d S )Nr:   rH   rF   rZ   )r3   r4   )r"   r-   )r"   )r   r7   r   r   r   )r*   r"   r-   r!   rg  r    r#   r#   r$   "test_index_false_from_json_to_json  s    z6TestPandasContainer.test_index_false_from_json_to_jsonc             C   s6   t dddd}tdgtdgddd	}tj|| d S )
Nz{"2019-01-01T11:00:00.000Z":88}r   r-   )r   r"   X   z2019-01-01 11:00:00r  )r  )r-   )r   r	   r   r   r   )r*   r    r!   r#   r#   r$   test_read_timezone_information  s    z2TestPandasContainer.test_read_timezone_informationzdate_format,key \&
P1DT0H0M0Sc             C   sB   t jdggt jdgd}d| d}|j|d}||ks>td S )Nr:   Z1D)r   z{"z
":{"0":1}})r   )rJ   r   r%  r7   rP   )r*   r   keyr1   r!   r    r#   r#   r$   test_timedelta_as_label  s    z+TestPandasContainer.test_timedelta_as_labelzorient,expected{"('a', 'b')":{"('c', 'd')":1}}{"('c', 'd')":{"('a', 'b')":1}} )Zmarksc             C   s4   t jdggdgd	gd}|j|d}||ks0td S )
Nr:   r3   r4   r5   r6   )r-   r   )r"   )r3   r4   )r5   r6   )rJ   r   r7   rP   )r*   r"   r!   r1   r    r#   r#   r$   test_tuple_labels  s    z%TestPandasContainer.test_tuple_labelsindentc             C   s   t jddgddggddgd}|j|d}d	| }d
| d| | d| | d| d| d| | d| | d| d}||kstd S )Nr   r   r   r   r3   r4   )r   )r|   z{
z"a":{
z"0":"foo",
z
"1":"baz"
z},
z"b":{
z"0":"bar",
z
"1":"qux"
z}
})rJ   r   r7   rP   )r*   r|  r1   r    spacesr!   r#   r#   r$   test_to_json_indent  s
    
Fz'TestPandasContainer.test_to_json_indent{
    "columns":[
        "a",
        "b"
    ],
    "index":[
        0,
        1
    ],
    "data":[
        [
            "foo",
            "bar"
        ],
        [
            "baz",
            "qux"
        ]
    ]
}f[
    {
        "a":"foo",
        "b":"bar"
    },
    {
        "a":"baz",
        "b":"qux"
    }
]n{
    "0":{
        "a":"foo",
        "b":"bar"
    },
    "1":{
        "a":"baz",
        "b":"qux"
    }
}n{
    "a":{
        "0":"foo",
        "1":"baz"
    },
    "b":{
        "0":"bar",
        "1":"qux"
    }
}V[
    [
        "foo",
        "bar"
    ],
    [
        "baz",
        "qux"
    ]
]b  {
    "schema":{
        "fields":[
            {
                "name":"index",
                "type":"integer"
            },
            {
                "name":"a",
                "type":"string"
            },
            {
                "name":"b",
                "type":"string"
            }
        ],
        "primaryKey":[
            "index"
        ],
        "pandas_version":"0.20.0"
    },
    "data":[
        {
            "index":0,
            "a":"foo",
            "b":"bar"
        },
        {
            "index":1,
            "a":"baz",
            "b":"qux"
        }
    ]
}c             C   s<   t jddgddggddgd}|j|dd	}||ks8td S )
Nr   r   r   r   r3   r4   )r   rZ   )r"   r|  )rJ   r   r7   rP   )r*   r"   r!   r1   r    r#   r#   r$   test_json_indent_all_orients  s    wz0TestPandasContainer.test_json_indent_all_orientsc          
   C   s.   t jtdd tj jdd W d Q R X d S )Nzmust be a nonnegative integer)r?   r:   )r|  )r@   rA   rB   rJ   r   r7   )r*   r#   r#   r$    test_json_negative_indent_raisesz  s    z4TestPandasContainer.test_json_negative_indent_raisesc             C   s>   d}t j|}t jdtjdtjdtj dg}tj|| d S )Nz?["a", NaN, "NaN", Infinity, "Infinity", -Infinity, "-Infinity"]r3   NaNInfinityz	-Infinity)rJ   r   r   rM   r5  r   r   r   )r*   rE   r    r!   r#   r#   r$   test_emca_262_nan_inf_support~  s
    
z1TestPandasContainer.test_emca_262_nan_inf_supportc             C   sD   t dddg}tjt" t|j dd}tj|| W d Q R X d S )Nr:   rH   rF   T)rT   )r   r   Zassert_produces_warningFutureWarningr   r7   r   )r*   r!   r    r#   r#   r$   'test_deprecate_numpy_argument_read_json  s    z;TestPandasContainer.test_deprecate_numpy_argument_read_jsonc             C   s>   t jddiddig}tdddgi}t|}tj|| d S )NcolZ31900441201190696999Text)r   r   r   r   r   r   )r*   Zencoded_jsonr!   r    r#   r#   r$   test_frame_int_overflow  s    z+TestPandasContainer.test_frame_int_overflowzdataframe,expected)r;   r<   zU{"(0, 'x')":1,"(0, 'y')":"a","(1, 'x')":2,"(1, 'y')":"b","(2, 'x')":3,"(2, 'y')":"c"}c             C   s$   |j  }|jdd}||ks td S )Nr-   )r"   )stackr7   rP   )r*   Z	dataframer!   r   r    r#   r#   r$   test_json_multiindex  s    z(TestPandasContainer.test_json_multiindexc             C   s   dd l }d\}}tdddgdddgd	}|jd
| d|  d}xF|dd |jdjj D krfP |jd |d8 }|dksFtdqFW d S )Nr   pandas-test	test.jsonr:   rH   rF   rZ   rz   )r;   r<   zs3:///r   c             s   s   | ]}|j V  qd S )N)rv  )r\   r2  r#   r#   r$   	<genexpr>  s    z1TestPandasContainer.test_to_s3.<locals>.<genexpr>g?z,Timed out waiting for file to appear on moto)r  r  )timer   r7   ZBucketZobjectsallsleeprP   )r*   rJ  r  Zmock_bucket_nameZtarget_filer1   timeoutr#   r#   r$   
test_to_s3  s    
zTestPandasContainer.test_to_s3c             C   s$   t jt jggj }|dks td S )Nz{"0":{"0":null}})rJ   r   ZNAr7   rP   )r*   r    r#   r#   r$   test_json_pandas_na  s    z'TestPandasContainer.test_json_pandas_nac             C   s"   t j|ggj }|dkstd S )Nz{"0":{"0":null}})rJ   r   r7   rP   )r*   Znulls_fixturer    r#   r#   r$   test_json_pandas_nulls  s    z*TestPandasContainer.test_json_pandas_nullsc             C   s,   t ddd}tjdddg}tj|| d S )Nz[true, true, false]r   )r   TF)r   rJ   r	   r   r   )r*   r    r!   r#   r#   r$   test_readjson_bool_series  s    z-TestPandasContainer.test_readjson_bool_series)rq   rr   r   )rs   rt   r9   )ru   rv   r9   )rw   rx   r9   )r   r:   r   )r   r:   r   333333       )r  r:   r  )r   rH   r   )r   rF   r   )r   r   r   )r   N)r   r   )r   r   )r   r   )r   r   )r   N)r   r   )r   r   )r   r   )r   r   )r   rt  )r   ru  )r-   rx  )r   ry  )r9   r  )r   r  )r-   r  )r   r  )r   r  )rf  r  )r   r   r   r@   Zfixturer+   r0   r2   r8   markZparametrizer=   rD   r
   rN   rO   rR   rd   rU   rM   r   rW   Zfloat64intr`   rb   rf   rh   rp   ry   r   r   ZNINFr   Zskipifr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   rJ   r   r   r  r  r  r  r
  r  r  r  r   networkZsingler  ZDatetimeTZDtyper  r#  r&  r%  r   r(  r*  r7  r8  r;  r=  r@  rC  rF  r   rG  rI  tdZskip_if_not_us_localerK  rP  rQ  sysmaxsizerT  r   ZIS64rU  rV  rW  rb  re  rh  ri  rj  rk  r   Zrename_axisrm  ro  rp  rq  rs  rw  paramr`  r{  r  r  r  r  r  r  r  r  r  r  r  r#   r#   r#   r$   r&   &   s  	&$      	
	`&	
 	  
	(#
.6&	  ( , ( $ (,2" 		*	$  
 
 
 
 "
	
r&   ).collectionsr   r   r   r   r   r   r   r  rT   rM   r@   Zpandas.compatr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  ZpandasrJ   r   r   r	   r
   r   r   Zpandas._testingZ_testingr   ZgetSeriesDataZ_seriesdZ_framer(   r'   r   catZCategoricalIndexr-   r   reversedr   r%   r  filterwarningsr&   r#   r#   r#   r$   <module>   s,    
0