U
    +if                    @   sV  d dl Z d dl m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m  mZ d dlZd dlmZmZmZmZmZ d dlmZ e ZeeZe  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*+dej*+dG dd dZ,dS )    N)	timedelta)Decimal)StringIO)IS64is_platform_windows)	DataFrameDatetimeIndexSeries	Timestamp	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| | d S )NrecordsvaluesTdrop)reset_indexrangelencolumnstmassert_frame_equal)resultexpectedorient r%   S/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/io/json/test_pandas.pyassert_json_roundtrip_equal'   s
    r'   zBignore:an integer is required (got type float)*:DeprecationWarningz6ignore:the 'numpy' keyword is deprecated:FutureWarningc                   @   sv  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	
ddddgdd Zej	
dddgdd Zej	
dddge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	
ddddgd$d% Zd&d' Zej	
d(d)egej	
d*dd)gej	
d+dd)gd,d- Zej	
d(d)ejgej	
d*dd)gej	
d+dd)gd.d/ Zej	
d(d0ejed1gej	
d*dd)gej	
d+dd)gd2d3 Zej	
d*dd)gej	
d+dd)gd4d5 Zej	
d*dd)gej	
d+dd)gd6d7 Zej	
d*dd)gej	
d+dd)gd8d9 Zej	
d*dd)gej	
d+dd)gd:d; Zej	
d<d=d>d?d@gdfdAdBgdCdD Zej	
d(dd)gej	
d*dd)gej	
d+dd)gdEdF Zej	
d(dd)gdGdH Z ej	
dIej!ej"gej	
d(dd)gdJdK Z#ej	j$e% dLdMej	
dNdOdPdQdRdSdTgdUdV Z&dWdX Z'dYdZ Z(d[d\ Z)d]d^ Z*d_d` Z+dadb Z,dcdd Z-dedf Z.dgdh Z/didj Z0ej	
d+dd)gdkdl Z1ej	
d(d)d0gej	
d+dd)gdmdn Z2ej	
d+dd)gdodp Z3ej	
d+dd)gdqdr Z4ej	
d(ejegej	
d+dd)gdsdt Z5dudv Z6dwdx Z7dydz Z8ej	
d{de9d|gd}d~fd)e9dgfgdd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@ej	
dddgej	
ddd)gej	
deAjBeAjAegdd ZCej	
ddddddddgdd ZDej	
ddddddgdd ZEdd ZFej	
ddddddgdd ZGdd ZHej	
dddddgdd ZIdd ZJdd ZKdd ZLdd ZMej	jNeOjNdddej	
ddePjQddgdd}gdePjQddggddń ZRddǄ ZSddɄ ZTej	
ddd)gej	
dddgej	
dePjUeVgdd̄ ZWdd΄ ZXddЄ ZYdd҄ ZZddԄ Z[ddք Z\dd؄ Z]ddڄ Z^ej	
ded܃eddded߃gdd Z_ej	
dePj`dddePj`ddddePj`dddgdd Zadd Zbej	jcedjedd Zfdd Zgdd Zhej	
deijjd eijjd  gdd Zkej	
dddgdd Zldd Zmdd Znej	jodepdd d Zqdd Zrej	
dd0ddgddgddgddgdd	ggej	
dddgddgdd	ggd
d Zsdd Ztej	
dddddgdd Zuej	
d(deedgdd Zvdd Zwej	
dexddgddggddgdddgddgddggdfexddgddggddgdydddgddgddggdfexddgddggddgddgddggdddgddgddggdfe9dddgddddddgdfe9dddgddydddddgdfe9ddgdddgddggddddgdfgd d! Zzej	
dexddgddggddgdexddgddggddgdydexddgddggddgddgddggde9dddgdde9dddgddyde9ddgdddgddggdgd"d# Z{ej	
dddddgd$d% Z|ej	
ddd&gej	
ddd)gd'd( Z}d)d* Z~ej	
d+d,d-d.d/gd0d1 Zej	
d2d3d4gd5d6 Zej	
d7d8d9ejdd:ej	jd;ejd&d:ej	jd;gd<d= Zej	
d>dddgd?d@ Zej	
d7dAdBdCdDdEdFgdGdH ZdIdJ ZdKdL ZdMdN ZdOdP Zej	
dQexdddgdddgdRdSfgdTdU Zej	jcdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zej	
d`e9dadbdcdddefe9dfdgdhdddifexdjdkgdldmggdnfexdodpgdqdrggdsfgdtdu Zd0S (v  TestPandasContainerT)Zautousec                 c   s   t  | _d V  d S N)
_cat_framecopycategoricalselfr%   r%   r&   setup4   s    
zTestPandasContainer.setupc                 C   s    t  }d|_|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d |_|S r)   )r   r    ZgetTimeSeriesDatar1   r2   r.   dfr%   r%   r&   datetime_frameC   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
}| }t||| d S )Nabcdz	index " 1z	index / 2za \ bzy / zr1   r   r$   r   r   to_jsonr+   r'   r.   r$   r6   r"   r#   r%   r%   r&    test_frame_double_encoded_labelsK   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	}| }t||| d S )
Nr8   r9   r:   r;      xyr<   r=   r>   r@   r%   r%   r&   test_frame_non_unique_indexW   s    "z/TestPandasContainer.test_frame_non_unique_indexr1   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 5 Q R X d S )Nr8   r9   r:   r;   rC   rD   rE   r<   z+DataFrame index must be unique for orient=''matchr=   r   pytestraises
ValueErrorr?   r.   r$   r6   msgr%   r%   r&   "test_frame_non_unique_index_raises_   s    "z6TestPandasContainer.test_frame_non_unique_index_raisesdatar8   r9   r:   r;   g      ?g      @g      @g      @rC      20130101Z20130102c                 C   s   t |ddgddgd}t|j|d|dgd}|dkrt |}|jd d df jd	kr|jd d df tjd
 |jd d df< n|dkr|}t	|| d S )NrC      rD   r<   r=   )r$   convert_datesr   r   datetime64[ns]@B rB   )
r   r   r?   ilocr   viewnpr   r    r!   )r.   r$   rQ   r6   r"   r#   r%   r%   r&   test_frame_non_unique_columnsf   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 5 Q R X d S )Nr8   r9   r:   r;   rC   rT   rD   r<   z-DataFrame columns must be unique for orient='rG   rH   r=   rJ   rN   r%   r%   r&   $test_frame_non_unique_columns_raises   s    "z8TestPandasContainer.test_frame_non_unique_columns_raisesc                 C   s   |  |j ddkstd S )Nr   r=   r?   AssertionError)r.   float_framer%   r%   r&   test_frame_default_orient   s    z-TestPandasContainer.test_frame_default_orientr   Fconvert_axesnumpyc           	      C   s2   |j |d}t|||||d}|}t||| d S )Nr=   r$   ra   rb   r   )r?   r   r'   )	r.   r$   ra   rb   r   r_   rQ   r"   r#   r%   r%   r&   test_roundtrip_simple   s        z)TestPandasContainer.test_roundtrip_simplec           	      C   sX   |j |d}t|||||d}|}|rHtr0t rH|sH|dkrH|tj}t||| d S )Nr=   rc   rB   )r?   r   r   r   astyperZ   Zint32r'   )	r.   r$   ra   rb   r   	int_framerQ   r"   r#   r%   r%   r&   test_roundtrip_intframe   s*        z+TestPandasContainer.test_roundtrip_intframeNU3c           
      C   s
  t tddd tdD dd tdD |d}|r\|dkr\|d	kr\|jtjjd
d |j	|d}t
|||||d}| }	|s|	tj}	|r|dkr|	jtj|	_|	jtj|	_n:|dkr|r|	jtj|	_n|r|d	kr|	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>rj   c                 S   s   g | ]}t |qS r%   rk   rm   r%   r%   r&   rp      s     ri   )r   r1   r   rh   rB   Can't decode directly to arrayreasonr=   rc   r<   r   )r   rZ   Zzerosr   node
add_markerrK   markxfailr?   r   r+   re   r   r   r1   r'   )
r.   requestr$   ra   rb   r   r6   rQ   r"   r#   r%   r%   r&   test_roundtrip_str_axes   s:        z+TestPandasContainer.test_roundtrip_str_axesc                 C   s   |dkr&|j tjjd| dd | jj|d}|r^|dkr^|j tjjd| dd t||||d	}| j }|j	
t|_	d |j	_|s|d
kr| }t||| d S )Nr<   z.Can't have duplicate index values for orient 'z')rr   r=   )r   r   zOrient z is broken with numpy=Truer$   ra   rb   r1   )rt   ru   rK   rv   rw   r,   r?   r   r+   r1   re   rl   r   
sort_indexr'   )r.   rx   r$   ra   rb   rQ   r"   r#   r%   r%   r&   test_roundtrip_categorical   s$    

z.TestPandasContainer.test_roundtrip_categoricalc                 C   s~   t  }|j|d}t||||d}| }|rJ|jt|_|jt|_|rn|dkrn|jdgddj	dd}t
|| d S )	Nr=   rz   r   r   rC   ZaxisTr   )r   r?   r   r+   r1   re   floatr   reindexr   r    r!   )r.   r$   ra   rb   Zempty_framerQ   r"   r#   r%   r%   r&   test_roundtrip_empty   s    z(TestPandasContainer.test_roundtrip_emptyc           	      C   sb   |j |d}t||||d}| }|sR|jtjd }|dkrL|t}||_t	||| d S )Nr=   rz   rW   rB   )
r?   r   r+   r1   rY   rZ   r   re   rl   r'   )	r.   r$   ra   rb   r7   rQ   r"   r#   idxr%   r%   r&   test_roundtrip_timestamp  s    
z,TestPandasContainer.test_roundtrip_timestampc                 C   s   |r"|dkr"|j tjjdd t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	||||d}	|
 }
|
jf |
dtj}
|s|dkr|
 }
t|	|
| d S )NrB   rq   rr   r8   r9   r:   r;   eg              ?       @      @      @Zfoo1Zfoo2Zfoo3Zfoo4Zfoo5TF)ABCD)rQ   r1   r=   rz   numberr1   )rt   ru   rK   rv   rw   pdIndexr   r?   r   r+   ZassignZselect_dtypesre   rZ   r   r{   r'   )r.   rx   r$   ra   rb   r1   r   r6   rQ   r"   r#   r%   r%   r&   test_roundtrip_mixed  s$    z(TestPandasContainer.test_roundtrip_mixedzdata,msg,orient)z{"key":b:a:d}zExpected object or valuer   zO{"columns":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}|z;Length of values \(3\) does not match length of index \(2\))zW{"columns":["A","B","C"],"index":["1","2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}z+3 columns passed, passed data had 2 columnsrB   )zN{"badkey":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}zunexpected key\(s\): badkeyrB   c              	   C   s.   t jt|d tt||d W 5 Q R X d S )NrH   r=   )rK   rL   rM   r   r   )r.   rQ   rO   r$   r%   r%   r&   $test_frame_from_json_bad_data_raises4  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d sBtt d	d
gdddgg}t|j|d|||d}t|jd std S )NrC   rT   rj   r      r=   )r$   ra   r   r   rT   12456)r   r   r?   rZ   isnanrX   r^   )r.   r$   ra   rb   r   Znum_dfr"   Zobj_dfr%   r%   r&   !test_frame_from_json_missing_dataZ  s     

z5TestPandasContainer.test_frame_from_json_missing_datac                 C   s(   t d|d}ttjg}t|| d S )Nz[null]r   )r   r   rZ   nanr    r!   )r.   r$   r   r"   r#   r%   r%   r&   (test_frame_read_json_dtype_missing_valuep  s    z<TestPandasContainer.test_frame_read_json_dtype_missing_valueinfc                 C   sH   t ddgdddgg}||jd< t| |d}t|jd sDtd S )NrC   rT   rj   r   r   r   r   )r   locr   r?   rZ   r   rX   r^   )r.   r$   r   r   r6   r"   r%   r%   r&   test_frame_infinityy  s    
z'TestPandasContainer.test_frame_infinityz$not compliant on 32-bit, xref #15865rr   zvalue,precision,expected_val)gffffff?rC   r   )g333333?rC   r   )g333333rC   g       )gףp=
?rT   r   )gCl?rR   r   )g?r   r   c                 C   s2   t d|ig}|j|d}|d| dks.td S )NZa_float)Zdouble_precisionz{"a_float":{"0":}}r   r?   r^   )r.   value	precisionZexpected_valr6   encodedr%   r%   r&   "test_frame_to_json_float_precision  s    z6TestPandasContainer.test_frame_to_json_float_precisionc              	   C   s<   t dddg}d}tjt|d |jdd W 5 Q R X d S NrC   rT   rR   z+Invalid value 'garbage' for option 'orient'rH   garbager=   rJ   )r.   r6   rO   r%   r%   r&   test_frame_to_json_except  s    z-TestPandasContainer.test_frame_to_json_exceptc                 C   sf   t ddgd}|jrttjt| t|jd|dd t dg ig djd	d
}d}||ksbtd S )Njimjoer   r   Fcheck_index_typetestr1   r   r=   z{"test":{}})	r   _is_mixed_typer^   r    r!   r   r?   dictdtypesr.   r6   r"   r#   r%   r%   r&   test_frame_empty  s    
  z$TestPandasContainer.test_frame_emptyc                 C   sP   t ddgd}|d d|d< |js*ttjt| t|j	d|dd d S )Nr   r   r   i8r   Fr   )
r   re   r   r^   r    r!   r   r?   r   r   r5   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| }dD ]*}|j|d}t||dd}t|| qft	
t||_|jd d}t|d dd}t|| t	
|jd |_|jd!d}t|d!dd}t|| d S )"N
   rC   r   皙?g{Gz?   rT   r   g?g{Gz?   rR   r   g333333?gQ?(   rj   quxg?g{Gz?abcdZ1stZ2ndZ3rdZ4thZ5thr<   )rB   r1   r   r=   Fr$   ra   r   r   )r   listr   r^   r+   r?   r   r    r!   rZ   aranger   r1   shaper   )r.   valsr6   rightr$   Zinpleftr%   r%   r&   test_frame_mixedtype_orient  s0      
z/TestPandasContainer.test_frame_mixedtype_orientc           
   	   C   s  t dd}tt|d d}tddddgdd	d
dgddddgddddgddddggddddg|d}td|d< td|jd |j	df< |d |d!< t j
|jd"|j	d!f< |d#d$d%}tj|d&}t|}t|| |jd!gd"d'}tj|d(}t|}	t||	 d S ))Nz
2000-01-03z
2000-01-07freqgÉ?gz~Kc?gX7?gH/ƿg|RпgXgsBfg(ƿg<1=?g9?gg??gLł
gJQg[r?T?gj<DH>?g-ѿgIEx?gW!i`ygP04?g+]5?r   r   r   r   r   r1   z19920106 18:21:32.12daterS   rR   modifiedrC   iojsonrQ   ztsframe_v012.jsonr}   ztsframe_iso_v012.json)r   
date_ranger   rZ   Zasarrayr   r
   rX   r   get_locNaTospathjoinr   r    r!   r   )
r.   datapathdtir6   dirpathZv12_jsonZdf_unserZdf_isoZv12_iso_jsonZdf_unser_isor%   r%   r&   test_v12_compat  s0    





z#TestPandasContainer.test_v12_compatc                 C   s   t jdddd}tt|d d}tdddd	d
dddddg
ddddddddddg
ddddddd d!d"d#g
d$d%d&d'd(d)d*d+d,d-g
d.d/d0d1d2d3d4d5d6d7g
d8d9d:d;d<d=d>d?d@dAg
dB|dC}|jdD|_t|jdEdFdEdF}t	j
||dGdGdGdGdH d S )INZ20000101r   H)periodsr   r   g}S? wgbm?gz(~J	?g1?gk*MgvTj?g7j	" Y?gp+KS(g񒬁?gZtSyiL,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_2r   unicoderB   r=   T)r   Zcheck_column_typeZ	by_blocksZcheck_exact)r   r   r   r   r   r   re   r   r?   r    r!   )r.   r1   df_mixedZdf_roundtripr%   r%   r&   test_blocks_compat_GH9037  s    JOz-TestPandasContainer.test_blocks_compat_GH9037c           
   	   C   s   G dd d}d}||}t d|jgi}| d| dksBtt d|gi}d}tjt|d |  W 5 Q R X t |gd	gd
ddgd}tjt|d |  W 5 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|| _d S r)   )hexedbytesfromhexbinary)r.   r   r%   r%   r&   __init__N  s    zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__)returnc                 S   s   | j S r)   )r   r-   r%   r%   r&   __str__R  s    zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__N)__name__
__module____qualname__r   rl   r   r%   r%   r%   r&   BinaryThingM  s   r   Z574b4454ba8c5eb4f98a8f45r   z{"A":{"0":""}}z6Unsupported UTF-8 sequence length when encoding stringrH   rC   r   r   r   r   default_handlerz"},"B":{"0":1}})r   r   r?   r^   rK   rL   OverflowErrorrl   )
r.   r   r   ZbinthingZdf_printableZdf_nonprintablerO   r   r"   r#   r%   r%   r&   test_frame_nonprintable_bytesJ  s&    

z1TestPandasContainer.test_frame_nonprintable_bytesc                 C   s<   t dd dgddgi }ddd  d}||ks8td S )Nr   i rC   r   i9  {"z":{"0":1},"foo":{"0":1337}}r   r.   r"   r#   r%   r%   r&   test_label_overflowp  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 5 Q R X t|t|jd	dd	d
d t|jdddd
d}t|j	|j	 d S )Nr8   r9   rC   r   z.Series index must be unique for orient='index'rH   r1   r=   rB   series)r$   typr   )
r	   rK   rL   rM   r?   r    assert_series_equalr   Zassert_numpy_array_equalr   )r.   srO   Zunserializedr%   r%   r&   test_series_non_unique_indexv  s     
  z0TestPandasContainer.test_series_non_unique_indexc                 C   s   |  |j ddkstd S Nr1   r=   r]   )r.   string_seriesr%   r%   r&   test_series_default_orient  s    z.TestPandasContainer.test_series_default_orientc                 C   sR   |j |d}t|d||d}|}|dkr4|jdd}|dkrBd |_t|| d S Nr=   r   r   r$   rb   r   r   Tr   rB   r?   r   r   r   r    r   )r.   r$   rb   r   rQ   r"   r#   r%   r%   r&   test_series_roundtrip_simple  s    z0TestPandasContainer.test_series_roundtrip_simplec                 C   sT   |j |d}t|d|||d}|}|dkr6|jdd}|dkrDd |_t|| d S )Nr=   r   )r   r$   rb   r   r   Tr   rB   r   )r.   r$   rb   r   Zobject_seriesrQ   r"   r#   r%   r%   r&   test_series_roundtrip_object  s    z0TestPandasContainer.test_series_roundtrip_objectc                 C   sd   t g g tjd}|j|d}t|d||d}|}|dkrF|jdd}n|jt|_t	
|| d S )Nr1   r   r=   r   r   r   Tr   )r	   rZ   float64r?   r   r   r1   re   r~   r    r   )r.   r$   rb   Zempty_seriesrQ   r"   r#   r%   r%   r&   test_series_roundtrip_empty  s    z/TestPandasContainer.test_series_roundtrip_emptyc                 C   sR   |j |d}t|d||d}|}|dkr4|jdd}|dkrBd |_t|| d S r   r   )r.   r$   rb   r4   rQ   r"   r#   r%   r%   r&    test_series_roundtrip_timeseries  s    z4TestPandasContainer.test_series_roundtrip_timeseriesc                 C   sd   t tdddddddgd}|j|d	}t|d
||d}| }|dkrT|jdd}t|| d S )Nr   r8   r9   r:   r;   r   fr   r=   r   r   r   Tr   )r	   r   r?   r   r+   r   r    r   )r.   r$   rb   r   r   rQ   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 5 Q R X d S r   )r	   rK   rL   rM   r?   )r.   r   rO   r%   r%   r&   test_series_to_json_except  s    z.TestPandasContainer.test_series_to_json_exceptc                 C   s4   t dddg}t| ddd}tj||dd d S )N=
ףp=@r   T)r   precise_floatFr   )r	   r   r?   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| dtjd}t dgd }t|| d S )Nr  r   r   r   rj   rR   )r	   r   r?   rZ   r   r    r   )r.   r   r"   r#   r%   r%   r&   test_series_with_dtype  s    z*TestPandasContainer.test_series_with_dtypezdtype,expected
2000-01-01rV   r   l    ,Uqc                 C   s4   t dgdd}| }t|d|d}t|| d S )Nr  rV   r   r   r	  )r	   r?   r   r    r   )r.   r   r#   r   rQ   r"   r%   r%   r&   test_series_with_dtype_datetime  s    z3TestPandasContainer.test_series_with_dtype_datetimec                 C   s8   t dddgdddgg}t| dd}t|| d S )Nr  T)r  r   r   r?   r    r!   r.   r6   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| d d
}t|| d S )Nr   r8   r9   r:   r;   r   r  r   r   r   )r	   r   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| }t|| t dddgdddgddd	d
gd}t| }t|| d S )NrC   rT   rR   rj   r   r   r8   r9   r   r   r   r   r  r  r%   r%   r&   test_reconstruction_index  s    $z-TestPandasContainer.test_reconstruction_indexc              	   C   s<   t d(}|||fD ]}|| t| qW 5 Q R X d S )N	test.json)r    ensure_cleanr?   r   )r.   r_   rf   r7   r   r6   r%   r%   r&   	test_path   s    
zTestPandasContainer.test_pathc                 C   sR   |  }t|}t|| |  }t|dd}tj||dd |jd ksNtd S )Nr   r  F)Zcheck_names)r?   r   r    r!   r   r   r^   )r.   r4   r7   r   r"   r%   r%   r&   test_axis_dates  s    z#TestPandasContainer.test_axis_datesc                 C   s   |}t d|d< | }t|}t|| d|d< |jdd}t|dd}| }|d jd	|d< |d d
|d< t|| t	t d|j
d}| }t|dd}t|| d S )NrS   r   r   r   ns	date_unitFrU   r   r   r   r   r  )r
   r?   r   r    r!   r+   r   rY   re   r	   r1   r   )r.   r4   r7   r6   r   r"   r#   r0   r%   r%   r&   test_convert_dates  s     z&TestPandasContainer.test_convert_datesdate_formatepochiso	as_objectdate_typc                 C   sl   |ddddt jg}|r"|d t||d}|j|d}|dkrHd}nd	}|r\|d
d}||kshtd S )Ni  rC   )yearmonthdayr8   r   r  r  z+{"1577836800000":1577836800000,"null":null}zC{"2020-01-01T00:00:00.000Z":"2020-01-01T00:00:00.000Z","null":null}}	,"a":"a"})r   r   appendr	   r?   replacer^   )r.   r  r   r!  rQ   r3   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|| d S )	Nr   dumpsidrC   l    $ArT   z
2002-11-08r   )	pandas.io.jsonr/  r   r
   r   r   r   r    r!   )r.   r+  r/  rQ   r#   r"   r%   r%   r&   test_convert_dates_inferC  s     z,TestPandasContainer.test_convert_dates_inferzdate,date_unit)20130101 20:43:42.123N)20130101 20:43:42r   )r3  ms)z20130101 20:43:42.123456us)z20130101 20:43:42.123456789r  c                 C   s   |}t ||d< tj|jd|jdf< tj|jd|jdf< |rT|jd|d}n|jdd}t|}| }|j	
d|_	|d j
d|d< t|| d S )Nr   rC   r   r  r  r  r%  UTC)r
   r   r   rX   r   r   r?   r   r+   r1   tz_localizedtr    r!   )r.   r   r  r7   r6   r   r"   r#   r%   r%   r&   test_date_format_frameZ  s    z*TestPandasContainer.test_date_format_framec              	   C   s4   |}d}t jt|d |jddd W 5 Q R X d S )N*Invalid value 'foo' for option 'date_unit'rH   r  r   r7  )rK   rL   rM   r?   )r.   r7   r6   rO   r%   r%   r&   test_date_format_frame_raisest  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	d	|_|j
	d	}t|| d S )
Nr   rC   r   r  r7  r%  r   r  r8  )r	   r
   r1   r   r   rX   r?   r   r+   r9  r:  r    r   )r.   r   r  r4   r0   r   r"   r#   r%   r%   r&   test_date_format_seriesz  s    z+TestPandasContainer.test_date_format_seriesc              	   C   sB   t td|jd}d}tjt|d |jddd W 5 Q R X d S )Nr3  r   r<  rH   r  r   r7  )r	   r
   r1   rK   rL   rM   r?   )r.   r4   r0   rO   r%   r%   r&   test_date_format_series_raises  s    z2TestPandasContainer.test_date_format_series_raisesunitr   r5  r6  r  c                 C   s   |}t d|d< |jd}t d|jd|f< t d|jd|f< tj|jd|f< |jd|d	}t||d
}t	|| t|d d
}t	|| d S )Nr4  r   z19710101 20:43:42rC   z21460101 20:43:42rT   rj   r  r7  r  )
r
   r   r   rX   r   r   r?   r   r    r!   )r.   r@  r7   r6   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ddtdd}td|d< td|d< d|d	< tjddd
|_	|
 }t|tjtjdd}t|| d S )Nr   rT   ZABr   rS   r   intsTboolsr   )rD  rE  r   )r   rZ   randomrandnr   r
   r   r   r   r1   r?   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 5 Q R X t d}tddgddggddgd}t|| d S )Nz#[{"a": 1, "b": 2}, {"b":2, "a" :1}]Trb   rC   rT   r8   r9   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\)rH   Fr   )r   r   rK   rL   r^   r    r!   )r.   r"   r#   	error_msgr%   r%   r&   test_misc_example  s    z%TestPandasContainer.test_misc_examplec                 C   sF   |dddd}t |}| }t|}t|j|j|jd| d S )Nr   r   rQ   z	teams.csvr<   )	r   Zread_csvr?   r   r    r!   r   r1   r   )r.   r   r   r6   r   r"   r%   r%   r&   test_round_trip_exception_  s
    
z.TestPandasContainer.test_round_trip_exception_@https://api.github.com/repos/pandas-dev/pandas/issues?per_page=5)urlZcheck_before_testzfield,dtypeZ
created_atr8  tzZ	closed_atZ
updated_atc                 C   s&   d}t |dd}|| j|ks"td S )NrN  Tr  )r   r   r^   )r.   fieldr   rO  r"   r%   r%   r&   test_url  s    zTestPandasContainer.test_urlc                 C   sV  dd }t tdtddg}|jdks,tt| dd|}t|| t tdtddgt	
d	d
gd}|jdkstt| dd|}t|| ttdtddg}|d	 jdkstt|t| | ttddtddgd
dgt	jdddd}t|jdd}t	j|jdd|d< t	|j|d< t|| d S )Nc                 S   s   t j| ddS )Nr5  r@  )r   to_timedelta)rD   r%   r%   r&   <lambda>      z4TestPandasContainer.test_timedelta.<locals>.<lambda>   r   )secondsztimedelta64[ns]r   r  r   rC   r   daysrT   rS   )startr   r8   r9   r:   r  r  rT  r8   r:   )r	   r   r   r^   r   r?   applyr    r   r   r   r   r!   r   rU  r8   to_datetimer:   )r.   	converterr   r"   framer%   r%   r&   test_timedelta  s,    $z"TestPandasContainer.test_timedeltac                 C   sr   t dtdtdgitd}t dt|jd jt|jd jgi}t|j	dddd	id}t
j||d
d d S )Nr8   rX  rS   r   r   rC   r  r  r   Fr   )r   r   r
   objectr   	Timedeltar8   r   r   r?   r    r!   )r.   ra  r#   r"   r%   r%   r&   test_mixed_timedelta_datetime  s    $z1TestPandasContainer.test_mixed_timedelta_datetimetimedelta_typc                 C   sp   |dd|ddt jg}|r&|d t||d}|dkr@d}nd}|rT|d	d
}|j|d}||ksltd S )NrC   rZ  rT   r8   r   r  zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}r&  r'  r%  )r   r   r(  r	   r)  r?   r^   )r.   r   r  rf  rQ   r3   r#   r"   r%   r%   r&   test_timedelta_to_json   s    
z*TestPandasContainer.test_timedelta_to_jsonc                 C   sN   t  }tdd|gi}tddt|gi}t|jtd}tj||dd d S )Nr8      r   Fr   )rc  r   rl   r   r?   r    r!   )r.   r   ra  r#   r"   r%   r%   r&   test_default_handler7  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)ZmathjsComplexreZim)
isinstancecomplexrealimagrl   objr%   r%   r&   defaultA  s    
zBTestPandasContainer.test_default_handler_indirect.<locals>.default	   rC   ZSTRrj   r   zN/Ar  r8   r9   r   zR[9,[[1,null],["STR",null],[[["mathjs","Complex"],["re",4.0],["im",-5.0]],"N\/A"]]]r   r   r$   )r1  r/  r   rm  r~   r^   )r.   r/  rr  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 )NrC   gffffff@rj   rt  r   g333333?r   r  r8   r9   r   zE[["(1+0j)","(nan+0j)"],["(2.3+0j)","(nan+0j)"],["(4-5j)","(1.2+0j)"]]r   ru  )r   rm  r~   r?   rl   r^   )r.   r6   r#   r%   r%   r&   ,test_default_handler_numpy_unsupported_dtypeS  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 5 Q R X t jt d& tdddtd	d
gij|d W 5 Q R X d S )NZraisinc                    s   t  d S r)   )	TypeErrorrp  rO   r%   r&   my_handler_raisesc  s    zJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raisesrH   r8   rC   rT   r   rj   rt  )rK   rL   rx  r   rc  r?   rm  )r.   rz  r%   ry  r&   test_default_handler_raises`  s    z/TestPandasContainer.test_default_handler_raisesc              	   C   sx   t ddddddddgi}|d |d< | }|d d|d< || ksPt|d }|d }| | ksttd S )Nr   r8   r9   r:   r   category)r   r?   re   r^   )r.   r6   r#   r   scr%   r%   r&   test_categoricalo  s    z$TestPandasContainer.test_categoricalc                 C   s   t jdddd}|dd }t|t jdddd}| }||d< | }|| ks`tt|}t|}| | kstd S )	NrS   rR   
US/Easternr   rQ  utcrF  r   r   )	r   r   Z
tz_convertr9  r   r+   r?   r^   r	   )r.   tz_rangeZtz_naiver6   Zdf_naiver#   ZstzZs_naiver%   r%   r&   test_datetime_tz|  s    z$TestPandasContainer.test_datetime_tzc                 C   s   t tjdd}tj|jd d< |d}| }|| ksDtt	tjd}tj|jd d< |d}| }|| kstd S )Nr   rj      ZSparse)
r   rZ   rG  rH  r   r   re   r?   r^   r	   )r.   r6   Zsdfr#   r   ssr%   r%   r&   test_sparse  s    

zTestPandasContainer.test_sparser0   z2013-01-10 05:00:00Zz2013-01-10 00:00:00r  z2013-01-10 00:00:00-0500c                 C   sD   ddl m} d}||dd|ks$t| }||dd|ks@td S )Nr   r.  z"2013-01-10T05:00:00.000Z"TZ	iso_dates)r1  r/  r^   Zto_pydatetime)r.   r0   r/  expr:  r%   r%   r&   test_tz_is_utc  s
    	z"TestPandasContainer.test_tz_is_utcr  z2013-01-01 05:00:00ZrT   rF  z2013-01-01 00:00:00r  z2013-01-01 00:00:00-0500c                 C   sl   ddl m} d}d}||dd|ks(tt|}||dd|ksDttd|i}||dd}||ksht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"}}Tr  ZDT)r1  r/  r^   r   r   )r.   r  r/  r  Zdfexpr   r6   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|| d S )	N!{"a": 1, "b": 2}
{"b":2, "a" :1}
TlinesrC   rT   r8   r9   r   r   r   r    r!   r   r%   r%   r&   test_read_inline_jsonl  s    z*TestPandasContainer.test_read_inline_jsonlc                 C   s:   t dd|d}tddgddggddgd}t|| d S )	Nzs3n://pandas-test/items.jsonlT)r  storage_optionsrC   rT   r8   r9   r   r  )r.   s3_resources3sor"   r#   r%   r%   r&   test_read_s3_jsonl  s      z&TestPandasContainer.test_read_s3_jsonlc              
   C   sn   t dZ}t|d}|d W 5 Q R X t|dd}tddgddggdd	gd
}t || W 5 Q R X d S )Nztmp_items.jsonwr  Tr  rC   rT   r8   r9   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|| d}t|dd}tddgddggddgd	}t|| d S )
Nu5   {"a": "foo”", "b": "bar"}
{"a": "foo", "b": "bar"}
Tr  u   foo”r   r   r8   r9   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}| }dt| d }||ks4tt|tdgdgd}| }dt| d }||ksltd S )	N	articleId)r   r1   {"articleId":r&  r   )r   r1   r   {"0":{"articleId":r   )r	   rc  r?   rl   r^   r   )r.   r  r   r   r#   r6   r%   r%   r&   test_to_json_large_numbers  s    z.TestPandasContainer.test_to_json_large_numbersl        l            c              	   C   st   t dt| d }d}tjt|d t| W 5 Q R X t dt| d }tjt|d t| W 5 Q R X d S )Nr  r&  z#Value is too small|Value is too bigrH   r  r   )r   rl   rK   rL   rM   r   )r.   r  r   rO   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|| d}t |}t|}tddgdgd	}t|| d S )
Nz'{"articleId": "1404366058080022500245"}r   r  gg_SDr  r   z.{"0": {"articleId": "1404366058080022500245"}}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t|dd| t ddgddggddgd}|jddd}d}||ksttt|dd| d S )NrC   rT   r8   r9   r   r   T)r$   r  z{"a":1,"b":2}
{"a":1,"b":2}
zfoo}r   zfoo"z/{"a":"foo}","b":"bar"}
{"a":"foo\"","b":"bar"}
r  zfoo\za\z4{"a\\":"foo\\","b":"bar"}
{"a\\":"foo\"","b":"bar"}
)r   r?   r^   r    r!   r   r   r%   r%   r&   test_to_jsonl  s    z!TestPandasContainer.test_to_jsonlz%GH#13774 encoding kwarg not supported)rs   rL   c                 C   s   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 }dtfD ] }|D ]}|t||d qqddd}|D ]}|| qd S )Ns   E, 17rW     a   b   cs   EE, 17s   s   Ac                 S   s   g | ]}d d |D qS )c                 S   s$   g | ]}t |tr|d n|qS )latin-1)rl  r   decode)rn   rD   r%   r%   r&   rp   =  s     zFTestPandasContainer.test_latin_encoding.<locals>.<listcomp>.<listcomp>r%   )rn   rE   r%   r%   r&   rp   <  s   z;TestPandasContainer.test_latin_encoding.<locals>.<listcomp>r|  r   r  c              	   S   sD   t d0}| j||d t||d}t j| |dd W 5 Q R X d S )Nr  )encodingF)Zcheck_categorical)r    r  r?   r   r   )r   r  r   Zretrr%   r%   r&   	roundtripF  s    z:TestPandasContainer.test_latin_encoding.<locals>.roundtrip)r  )rZ   r   rc  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ddd }||ksJtd S )Nr8   rC   T)r1   deep)r   rl   Zmemory_usagesumr?   r^   )r.   r6   Zsize_beforeZ
size_afterr%   r%   r&   "test_data_frame_size_after_to_jsonO  s
    z6TestPandasContainer.test_data_frame_size_after_to_jsonr   r   r   r   1.2.c                 C   sB   t ddgddgg||d}|jdd}t|dd}t|| d S )NrC   rT   rR   rj   r<   tabler=   r   r?   r   r    r!   )r.   r1   r   r#   dfjsonr"   r%   r%   r&   .test_from_json_to_json_table_index_and_columnsY  s    zBTestPandasContainer.test_from_json_to_json_table_index_and_columnsc                 C   sD   t ddgddgddgd}|jdd	}t|dd	}t|| d S )
NrC   rT   r   r   r   r   r]  r  r=   r  )r.   r#   r  r"   r%   r%   r&   #test_from_json_to_json_table_dtypesd  s    z7TestPandasContainer.test_from_json_to_json_table_dtypesc                 C   s   t tdddgddtd ddgddtd d	d
gddtdddgddtddd gddtdd dgddd}|j|d}t||dddddddd}t|| d S )NrC   rT   rR   r   r   r   r   r    r:   rc  TFboolr8   r9   r|  z
2020-01-01z
2020-01-03rV   )IntegerFloatZObjectZBoolZCategoryZDatetimer=   r$   r   )r   	from_dictr	   r?   r   r    r!   )r.   r$   r#   r  r"   r%   r%   r&   %test_to_json_from_json_columns_dtypesk  s2     z9TestPandasContainer.test_to_json_from_json_columns_dtypes)r9   r:   c              	   C   sX   t ddgddgddgd}|jdd	}d
}tjt|d t|d|d W 5 Q R X d S )NrC   rT   r   r   r   r   r]  r  r=   z)cannot pass both dtype and orient='table'rH   r  r   r?   rK   rL   rM   r   )r.   r   r6   r  rO   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|d
dd W 5 Q R X d S )NrC   rT   rR   rj   r   r   r  r  r<   r  r=   z0cannot pass both convert_axes and orient='table'rH   Tr   r  )r.   r6   r  rO   r%   r%   r&   (test_read_json_table_convert_axes_raises  s
    "z<TestPandasContainer.test_read_json_table_convert_axes_raiseszdata, expectedrj   r   r   )r   rQ   r   r   r   r   )r   rQ   )r   r1   c                 C   s(   |j ddd}t|}||ks$td S )NrB   Fr$   r1   )r?   r   loadsr^   r.   rQ   r#   r"   r%   r%   r&   test_index_false_to_json_split  s     
z2TestPandasContainer.test_index_false_to_json_splitc                 C   sL   |j ddd}t|}tjjj|ddt|jddd}||ksHtd S )Nr  Fr  r   r   r=   )ZschemarQ   )	r?   r   r  r   r   Zbuild_table_schemar   to_dictr^   r.   rQ   r"   r#   r%   r%   r&   test_index_false_to_json_table  s    
z2TestPandasContainer.test_index_false_to_json_tablec              	   C   sL   t ddgddggddgd}d}tjt|d	 |j|d
d W 5 Q R X d S )NrC   rT   rj   r   r8   r9   r   z?'index=False' is only valid when 'orient' is 'split' or 'table'rH   Fr  rJ   rN   r%   r%   r&   test_index_false_error_to_json  s    z2TestPandasContainer.test_index_false_error_to_jsonr  c                 C   s@   t ddgddgd}|j||d}t||d}t|| d S )NrC   rT   rR   rj   r  r  r=   r  )r.   r$   r1   r#   r  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|| d S )
Nz{"2019-01-01T11:00:00.000Z":88}r   r1   )r   r$   X   z2019-01-01 11:00:00r8  rP  r   )r   r	   r   r    r   r   r%   r%   r&   test_read_timezone_information  s      z2TestPandasContainer.test_read_timezone_informationrO  zs3://example-fsspec/zgcs://another-fsspec/file.jsonzhttps://example-site.com/datazsome-protocol://data.txtc                 C   s.   t d| d}td|gi}t|| d S )Nz{"url":{"0":"r   rO  r  )r.   rO  r"   r#   r%   r%   r&   test_read_json_with_url_value  s    z1TestPandasContainer.test_read_json_with_url_valuezdate_format,key)r  i \&)r  Z
P1DT0H0M0Sc                 C   s@   t dggtdgd}d| d}|j|d}||ks<td S )NrC   Z1Dr   r   z
":{"0":1}}r%  )r   r   rd  r?   r^   )r.   r  keyr6   r#   r"   r%   r%   r&   test_timedelta_as_label  s    z+TestPandasContainer.test_timedelta_as_labelzorient,expected)r1   z{"('a', 'b')":{"('c', 'd')":1}})r   z{"('c', 'd')":{"('a', 'b')":1}}r  )Zmarksc                 C   s2   t dggdgdgd}|j|d}||ks.td S )NrC   r  )r:   r;   r<   r=   r   r.   r$   r#   r6   r"   r%   r%   r&   test_tuple_labels  s    z%TestPandasContainer.test_tuple_labelsindentc                 C   s   t 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   r8   r9   r   r   z{
z"a":{
z"0":"foo",
z
"1":"baz"
z},
z"b":{
z"0":"bar",
z
"1":"qux"
z}
}r   )r.   r  r6   r"   spacesr#   r%   r%   r&   test_to_json_indent#  s:    z'TestPandasContainer.test_to_json_indent)rB   z{
    "columns":[
        "a",
        "b"
    ],
    "index":[
        0,
        1
    ],
    "data":[
        [
            "foo",
            "bar"
        ],
        [
            "baz",
            "qux"
        ]
    ]
})r   zf[
    {
        "a":"foo",
        "b":"bar"
    },
    {
        "a":"baz",
        "b":"qux"
    }
])r1   zn{
    "0":{
        "a":"foo",
        "b":"bar"
    },
    "1":{
        "a":"baz",
        "b":"qux"
    }
})r   zn{
    "a":{
        "0":"foo",
        "1":"baz"
    },
    "b":{
        "0":"bar",
        "1":"qux"
    }
})r   zV[
    [
        "foo",
        "bar"
    ],
    [
        "baz",
        "qux"
    ]
])r  aa  {
    "schema":{
        "fields":[
            {
                "name":"index",
                "type":"integer"
            },
            {
                "name":"a",
                "type":"string"
            },
            {
                "name":"b",
                "type":"string"
            }
        ],
        "primaryKey":[
            "index"
        ],
        "pandas_version":"1.4.0"
    },
    "data":[
        {
            "index":0,
            "a":"foo",
            "b":"bar"
        },
        {
            "index":1,
            "a":"baz",
            "b":"qux"
        }
    ]
}c                 C   s:   t ddgddggddgd}|j|dd	}||ks6td S )
Nr   r   r   r   r8   r9   r   rj   )r$   r  r   r  r%   r%   r&   test_json_indent_all_orients7  s    wz0TestPandasContainer.test_json_indent_all_orientsc              	   C   s,   t jtdd t jdd W 5 Q R X d S )Nzmust be a nonnegative integerrH   r  )rK   rL   rM   r   r?   r-   r%   r%   r&    test_json_negative_indent_raises  s    z4TestPandasContainer.test_json_negative_indent_raisesc                 C   s:   d}t |}tdtjdtjdtj dg}t|| d S )Nz?["a", NaN, "NaN", Infinity, "Infinity", -Infinity, "-Infinity"]r8   NaNInfinityz	-Infinity)r   r   rZ   r   r   r    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t" t| dd}t|| W 5 Q R X d S )NrC   rT   rR   TrJ  )r   r    Zassert_produces_warningFutureWarningr   r?   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 ddiddig}tdddgi}t|}t|| 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rD   rE   zU{"(0, 'x')":1,"(0, 'y')":"a","(1, 'x')":2,"(1, 'y')":"b","(2, 'x')":3,"(2, 'y')":"c"}c                 C   s$   |  }|jdd}||ks td S r   )stackr?   r^   )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 d}|dd |dj D krhq|d |d8 }|dksHtdqHd S )Nr   )pandas-testr  rC   rT   rR   rj   r   r  zs3:///)r  r   c                 s   s   | ]}|j V  qd S r)   )r  )rn   rq  r%   r%   r&   	<genexpr>  s    z1TestPandasContainer.test_to_s3.<locals>.<genexpr>r  r   z,Timed out waiting for file to appear on moto)timer   r?   ZBucketobjectsallsleepr^   )r.   r  r  r  Zmock_bucket_nameZtarget_filer6   timeoutr%   r%   r&   
test_to_s3  s    
zTestPandasContainer.test_to_s3c                 C   sD   t |tr$tjjdd}|j| t|gg }|dks@t	d S )Nznot implementedrr   z{"0":{"0":null}})
rl  r   rK   rv   rw   rt   ru   r   r?   r^   )r.   Znulls_fixturerx   rv   r"   r%   r%   r&   test_json_pandas_nulls  s
    
z*TestPandasContainer.test_json_pandas_nullsc                 C   s*   t ddd}tdddg}t|| d S )Nz[true, true, false]r   r  TF)r   r	   r    r   r   r%   r%   r&   test_readjson_bool_series  s    z-TestPandasContainer.test_readjson_bool_seriesc                 C   s:   t dtddddgd }| }d}||ks6td S )NTz
2017-01-20z
2017-01-23r   r   r<   a  {"(Timestamp('2017-01-20 00:00:00'), 'foo')":true,"(Timestamp('2017-01-20 00:00:00'), 'bar')":true,"(Timestamp('2017-01-21 00:00:00'), 'foo')":true,"(Timestamp('2017-01-21 00:00:00'), 'bar')":true,"(Timestamp('2017-01-22 00:00:00'), 'foo')":true,"(Timestamp('2017-01-22 00:00:00'), 'bar')":true,"(Timestamp('2017-01-23 00:00:00'), 'foo')":true,"(Timestamp('2017-01-23 00:00:00'), 'bar')":true})r   r   r   r  r?   r^   r   r%   r%   r&   test_to_json_multiindex_escape  s    


z2TestPandasContainer.test_to_json_multiindex_escapec                 C   sJ   G dd d}t |dddddg}t| ddddd	iksFtd S )
Nc                   @   s   e Zd Zdd Zdd ZdS )zGTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObjectc                 S   s   || _ || _|| _|| _d S r)   r8   r9   _cr;   )r.   r8   r9   r  r;   r%   r%   r&   r     s    zPTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.__init__c                 S   s   dS )Nr   r%   r-   r%   r%   r&   r     s    zITestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.eN)r   r   r   r   r   r%   r%   r%   r&   _TestObject  s   r  rC   rT   rR   rj   r  0)r8   r9   r;   )r	   r   r  r?   r^   )r.   r  r   r%   r%   r&   test_to_json_series_of_objects  s    z2TestPandasContainer.test_to_json_series_of_objectszdata,expectedy             @y              ?y      "@      )r   rC   rT   zW{"0":{"imag":8.0,"real":-6.0},"1":{"imag":1.0,"real":0.0},"2":{"imag":-5.0,"real":9.0}}yHz"Q?y@p=
ף"@yQ@(\ſz]{"0":{"imag":0.66,"real":-9.39},"1":{"imag":9.32,"real":3.95},"2":{"imag":-0.17,"real":4.03}}y             @y              y      @      y              $z{"0":{"0":{"imag":3.0,"real":-2.0},"1":{"imag":-3.0,"real":4.0}},"1":{"0":{"imag":0.0,"real":-1.0},"1":{"imag":-10.0,"real":0.0}}}yQѿ(\?yHzG(\ؿy=
ףp=?(\տy(\迚z{"0":{"0":{"imag":0.34,"real":-0.28},"1":{"imag":-0.34,"real":0.41}},"1":{"0":{"imag":-0.39,"real":-1.08},"1":{"imag":-1.35,"real":-0.78}}}c                 C   s   |  }||kstd S r)   r]   r  r%   r%   r&   test_complex_data_tojson   s    #z,TestPandasContainer.test_complex_data_tojson)r   r   r   rK   Zfixturer/   r4   r7   rA   rv   ZparametrizerF   rP   r
   r[   r\   r`   r~   rd   rZ   r   rg   r   intry   r|   r   r   r   r   r   r   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   r*  r2  r;  r=  r>  r?  rB  rC  rI  rL  rM  networkr    r   ZDatetimeTZDtyperS  rb  re  rd  r   rg  ri  rv  rw  r{  r~  r  r  r  r   r  r  Z
single_cputdZskip_if_not_us_localer  r  r  sysmaxsizer  r  r  r  rw   rx  r  r  r  r  r  r  r  r   Zrename_axisr  r  r  r  r  r  r  paramskipr  r  r  r  r  r  r  r  r  r  r  r  r  r  r%   r%   r%   r&   r(   /   s  





	

&"

	`&









	

	
		

!
 .& (  ( 	 (   
	 
u	
	!r(   )-r,  r   decimalr   r   r   r   r   r  rb   rZ   rK   Zpandas.compatr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r   r   r	   r
   r   Zpandas._testingZ_testingr    ZgetSeriesDataZ_seriesdZ_framer+   r*   r   catZCategoricalIndexr1   r   reversedr   r'   rv   filterwarningsr(   r%   r%   r%   r&   <module>   s4   0
