o
    d                    @   s   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Zd dl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mZ d dlmZ d dlmZm Z  dd	 Z!G d
d dZ"dd Z#dd Z$dS )    N)	timedelta)Decimal)StringIO)IS64)NA	DataFrameDatetimeIndexSeries	Timestamp	read_json)ArrowStringArrayStringArrayc                 C   s<   |dv r
|j dd}|dkrtt|j|_t| | d S )N)recordsvaluesTdropr   )reset_indexrangelencolumnstmassert_frame_equal)resultexpectedorient r   e/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/io/json/test_pandas.pyassert_json_roundtrip_equal    s
   r   c                   @   s  e Zd Zejdd Zejdd Zejdd Zdd Zej	
d	g d
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	g d"d#d$ Zd%d& Zej	
d'd(egej	
d)d*d(gd+d, Zej	
d'd(ejgej	
d)d*d(gd-d. Zej	
d'd/ejed0gej	
d)d*d(gd1d2 Zej	
d)d*d(gd3d4 Zej	
d)d*d(gd5d6 Zej	
d)d*d(gd7d8 Zej	
d)d*d(gd9d: Zej	jd;ed<ej	
dd=d=gd>d?ggd=d@gd>d>ggd=d=gd>d>gggdAdB Zej	
dCdDdEdF dGgdfdHdIgdJdK Z!ej	
d'd*d(gej	
d)d*d(gdLdM Z"ej	
d'd*d(gdNdO Z#ej	
dPej$ej%gej	
d'd*d(gdQdR Z&ej	j'e( dSdTej	
dUg dVdWdX Z)dYdZ Z*d[d\ Z+d]d^ Z,d_d` Z-dadb Z.dcdd Z/dedf Z0dgdh Z1didj Z2dkdl Z3dmdn Z4ej	
d'd(d/gdodp Z5dqdr Z6dsdt Z7ej	
d'ejegdudv Z8dwdx Z9dydz Z:d{d| Z;ej	
d}d*e<d~gddfd(e<dgfgdd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCej	
dddgej	
dd*d(gej	
deDjEeDjDegdd ZFej	
dg ddd ZGej	
dg ddd ZHdd ZIej	
dg ddd ZJdd ZKej	
dg ddd ZLdd ZMdd ZNdd ZOej	jPeQjPdd*dej	
ddeRjSddgddgdeRjSddggdd ZTdd ZUdd ZVdd ZWej	
dd*d(gej	
dddgej	
deRjXeYgdd ZZddÄ Z[ddń Z\ddǄ Z]ddɄ Z^dd˄ Z_dd̈́ Z`ddτ Zaej	
dedуedddedԃgddք Zbdd؄ Zcej	
deRjdddd܍eRjdddddލeRjdddd܍gdd Zedd Zfdd Zgej	jheijjdd Zkdd Zldd Zmej	
denjod enjod  gdd Zpej	
dddgdd Zqdd Zrdd Zsej	jdetd<dd Zudd Zvej	
dd/ddgddgddgddgd dggej	
dddgddgd dggdd Zwdd Zxej	
d	g ddd Zyej	
d'd*eed	gd
d Zzdd Z{ej	
de|ddgddggddgdddgddgddggdfe|ddgddggddgd}dddgddgddggdfe|d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e<g ddddg ddfe<g ddd}ddg ddfe<ddgdddgddggddddgdfgdd Z~ej	
de|ddgddggddgde|ddgddggddgd}de|ddgddggddgddgddggde<g ddde<g ddd}de<ddgdddgddggdgdd Zej	
d	g ddd  Zej	
d	dd!gej	
dd*d(gd"d# Zd$d% Zej	
d&g d'd(d) Zej	
d*g d+d,d- Zej	
d.d/d0gd1d2 Zej	
d3d4d5ejdd6ej	jd7dTd8ejd!d6ej	jd7dTd8gd9d: Zej	
d;g d<d=d> Zej	
d3g d?d@dA ZdBdC ZdDdE ZdFdG Zej	
dHe|g dg dIdJdKfgdLdM Zej	jhdNdO ZdPdQ ZdRdS ZdTdU ZdVdW Zej	
dXe<dYdZd[d\d]fe<d^d_d`d\dafe|dbdcgdddeggdffe|dgdhgdidjggdkfgdldm Zdndo Zej	
d	g dpdqdr Zej	
d	g dsdtdu Zdvdw Zd/S (x  TestPandasContainerc                 C   sz   t  }t|}dgd dgd  dgd  dgt|d   }tj|dd|_tt||d< t	j
t|d	d
|d< |S )Nbah   barbazfoo   Enameint64dtypesort)r   getSeriesDatar   r   pdCategoricalIndexindexlistreversednparange)self_seriesd
_cat_framecatr   r   r   categorical_frame)   s   0z%TestPandasContainer.categorical_framec                 C   s    t  }d|_|jd |_|S )Nts)r   makeTimeSeriesr'   r/   
_with_freq)r4   serr   r   r   datetime_series5   s   z#TestPandasContainer.datetime_seriesc                 C   s   t t }|jd |_|S N)r   r   getTimeSeriesDatar/   r;   r4   dfr   r   r   datetime_frame>   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r/   r   r   r   r   to_jsoncopyr   r4   r   rA   r   r   r   r   r    test_frame_double_encoded_labelsF   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 )
NrC   rD   rE   rF      xyrG   rH   rI   rL   r   r   r   test_frame_non_unique_indexR   s   "z/TestPandasContainer.test_frame_non_unique_indexr/   r   c                 C   sn   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    d S 1 s0w   Y  d S )NrC   rD   rE   rF   rO   rP   rQ   rG   z+DataFrame index must be unique for orient=''matchrH   r   pytestraises
ValueErrorrJ   r4   r   rA   msgr   r   r   "test_frame_non_unique_index_raisesZ   s
   ""z6TestPandasContainer.test_frame_non_unique_index_raisesrN   r   datarC   rD   rE   rF         ?      @g      @g      @rO      2013010120130102c                 C   s   t |ddgddgd}t|j|d|dgd}|dkrBt |}|jd d df jd	krA|jd d df tjd
 |jd d df< n|dkrM|}ddg|_t	
|| d S )NrO      rP   rG   rH   )r   convert_datesr   r   datetime64[ns]@B rN   zx.1)r   r   rJ   ilocr*   viewr2   r(   r   r   r   )r4   r   r]   rA   r   r   r   r   r   test_frame_non_unique_columnsa   s   ,
z1TestPandasContainer.test_frame_non_unique_columns)r/   r   r   c                 C   sn   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    d S 1 s0w   Y  d S )NrC   rD   rE   rF   rO   rc   rP   rG   z-DataFrame columns must be unique for orient='rS   rT   rH   rV   rZ   r   r   r   $test_frame_non_unique_columns_raises   s
   ""z8TestPandasContainer.test_frame_non_unique_columns_raisesc                 C      |  |j ddksJ d S )Nr   rH   rJ   )r4   float_framer   r   r   test_frame_default_orient      z-TestPandasContainer.test_frame_default_orientr*   Fconvert_axesTc                 C   0   |j |d}t||||d}|}t||| d S NrH   r   rp   r*   rJ   r   r   )r4   r   rp   r*   rm   r]   r   r   r   r   r   test_roundtrip_simple   s   z)TestPandasContainer.test_roundtrip_simplec                 C   rq   rr   rt   )r4   r   rp   r*   	int_framer]   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}|j|d}t||||d	}| }|s3|tj}|rJ|d
v rJ|j	tj|_	|j
tj|_
n|dkrY|rY|j	tj|_	n|rg|dkrg|j	tj|_	t||| d S )N)      c                 S      g | ]}t |qS r   str.0ir   r   r   
<listcomp>       z?TestPandasContainer.test_roundtrip_str_axes.<locals>.<listcomp>rz   c                 S   r{   r   r|   r~   r   r   r   r      r   ry   )r   r/   r*   rH   rs   rG   r   rN   )r   r2   zerosr   rJ   r   rK   astyper(   r   r/   r   )r4   r   rp   r*   rA   r]   r   r   r   r   r   test_roundtrip_str_axes   s&   z+TestPandasContainer.test_roundtrip_str_axesc                 C   sn   |dv r|j tjjd| dd |j|d}t|||d}| }|j	t
|_d |j_t||| d S )NrG   z.Can't have duplicate index values for orient 'z')reasonrH   r   rp   )node
add_markerrW   markxfailrJ   r   rK   r/   r   r}   r'   r   )r4   requestr   r8   rp   r]   r   r   r   r   r   test_roundtrip_categorical   s   
z.TestPandasContainer.test_roundtrip_categoricalc                 C   st   t  }|j|d}t|||d}|dkr&tjg |rtntd}t ||d}n|dv r.t  }n| }t	|| d S )NrH   r   rN   r)   rG   )
r   rJ   r   r-   IndexfloatobjectrK   r   r   )r4   r   rp   empty_framer]   r   idxr   r   r   r   test_roundtrip_empty   s   z(TestPandasContainer.test_roundtrip_emptyc                 C   s`   |j |d}t|||d}| }|s(|jtjd }|dkr%|t}||_t	||| d S )NrH   r   rf   rN   )
rJ   r   rK   r/   rh   r2   r(   r   r}   r   )r4   r   rp   rB   r]   r   r   r   r   r   r   test_roundtrip_timestamp   s   
z,TestPandasContainer.test_roundtrip_timestampc           	      C   s   t g d}g dg dg dg dd}t||d}|j|d}t|||d	}| }|jdi |d
t	j
}t||| d S )N)rC   rD   rE   rF   e)              ?       @      @      @)r   r   r   r   r   )foo1foo2foo3foo4foo5)TFTFTABCD)r]   r/   rH   r   numberr   )r-   r   r   rJ   r   rK   assignselect_dtypesr   r2   r(   r   )	r4   r   rp   r/   r   rA   r]   r   r   r   r   r   test_roundtrip_mixed   s   z(TestPandasContainer.test_roundtrip_mixedz9#50456 Column multiindex is stored and loaded differently)r   rX   2022JANFEB2023c                 C   sD   t ddgddggtj|d}t|jdddd}t|| d S )NrO   rc   r`   rz   r   rN   rH   )r   r-   
MultiIndexfrom_arraysr   rJ   r   r   )r4   r   rA   r   r   r   r   test_roundtrip_multiindex  s   
z-TestPandasContainer.test_roundtrip_multiindexz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 columnsrN   )zN{"badkey":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}zunexpected key\(s\): badkeyrN   c                 C   sD   t jt|d tt||d W d    d S 1 sw   Y  d S )NrT   rH   )rW   rX   rY   r   r   )r4   r]   r[   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g dg}t|j|d|||d}t|jd s J t ddgg d	g}t|j|d|||d}t|jd s@J d S )
NrO   rc   rz   r       rH   rs   r   rc   12)456)r   r   rJ   r2   isnanrg   )r4   r   rp   r*   num_dfr   obj_dfr   r   r   !test_frame_from_json_missing_dataA  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   r2   nanr   r   )r4   r*   r   r   r   r   r   (test_frame_read_json_dtype_missing_valueV  s   z<TestPandasContainer.test_frame_read_json_dtype_missing_valueinfc                 C   sF   t ddgg dg}||jd< t| |d}t|jd s!J d S )NrO   rc   r   r   r)   )r   locr   rJ   r2   r   rg   )r4   r   r*   rA   r   r   r   r   test_frame_infinity_  s   
z'TestPandasContainer.test_frame_infinityz$not compliant on 32-bit, xref #15865r   zvalue,precision,expected_val))gffffff?rO   r   )g333333?rO   r   )g333333rO   g       )gףp=
?rc   r   )gCl?r`   r   )g?r$   r   c                 C   s2   t d|ig}|j|d}|d| dksJ d S )Na_float)double_precisionz{"a_float":{"0":}}r   rJ   )r4   value	precisionexpected_valrA   encodedr   r   r   "test_frame_to_json_float_precisioni  s   z6TestPandasContainer.test_frame_to_json_float_precisionc                 C   P   t g d}d}tjt|d |jdd W d    d S 1 s!w   Y  d S NrO   rc   r`   z+Invalid value 'garbage' for option 'orient'rT   garbagerH   rV   )r4   rA   r[   r   r   r   test_frame_to_json_exceptz  
   "z-TestPandasContainer.test_frame_to_json_exceptc                 C   sf   t ddgd}|jrJ tjt| t|jd|dd t dg ig djd	d
}d}||ks1J d S )Njimjoer   r)   Fcheck_index_typetestr/   r   rH   z{"test":{}})r   _is_mixed_typer   r   r   rJ   dictdtypesr4   rA   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J tjt| t|jd|dd d S )Nr   r   r   i8r)   Fr   )	r   r   r   r   r   r   rJ   r   r   r@   r   r   r   test_frame_empty_mixedtype  s   

z.TestPandasContainer.test_frame_empty_mixedtypec                 C   s   g dg dg dg dg}t |tdg dd}|jsJ | }dD ]}|j|d	}t||d
d}t|| q$t	t
||_|jdd	}t|dd
d}t|| t	|jd |_|jdd	}t|dd
d}t|| d S )N)
   rO   r#   皙?g{Gz?)   rc   r!   g?g{Gz?)   r`   r"   g333333?gQ?)(   rz   quxg?g{Gz?abcd)1st2nd3rd4th5thrG   )rN   r/   r   rH   Fr   r   rO   r   )r   r0   r   rK   rJ   r   r   r   r-   
RangeIndexr   r/   shaper   )r4   valsrA   rightr   inpleftr   r   r   test_frame_mixedtype_orient  s,   
z/TestPandasContainer.test_frame_mixedtype_orientc           
      C   s   t dd}tt|d d}tg dg dg dg dg dgg d	|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freq)gÉ?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/   z19920106 18:21:32.12datera   r`   modifiedrO   iojsonr]   ztsframe_v012.json)axisztsframe_iso_v012.json)r-   
date_ranger   r2   asarrayr   r
   rg   r   get_locNaTospathjoinr   r   r   r   )
r4   datapathdtirA   dirpathv12_jsondf_unserdf_isov12_iso_json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g dg dg dg d	g d
g dd|d}|jd|_t|jdddd}t	j
||ddddd d S )N20000101r   H)periodsr   r   )
g}S? wgbm?gz(~J	?g1?gk*MgvTj?g7j	" Y?gp+KS(g񒬁?gZtSy)
iL,i_}i4ziKeiL&i%giDiY)L i;eiD )
78c608f164a9974313d2ff52ca7f4af297236474bde7e2141a6bde47b1190be57a6691448d64d068)
gD!gIxJ g%
@gP\<g޿gPl?gFzn?g5mH/?gpH%gI?)
14f04af9d085da904bcfac8381504caf2ffef4a908e2f5c407e1af03addbd4a71f6a09ba4bfc4d87)
i/iiYi6iI i;>i	i( i0q{iѪ)float_1int_1str_1float_2str_2int_2r   unicoderN   rH   T)r   check_column_type	by_blockscheck_exact)r-   r   r   r0   r   r   r   r   rJ   r   r   )r4   r/   df_mixed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s!J t d|gi}d}tjt|d |  W d    n1 s@w   Y  t |gd	gd
ddgd}tjt|d |  W d    n1 shw   Y  |jtd}d| d}	||	ksJ |jtdd| dksJ d S )Nc                   @   s$   e Zd ZdddZdefddZdS )zFTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThingreturnNc                 S   s   || _ t|| _d S r>   )hexedbytesfromhexbinary)r4   r1  r   r   r   __init__4  s   zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__c                 S   s   | j S r>   )r1  r4   r   r   r   __str__8  s   zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__r0  N)__name__
__module____qualname__r5  r}   r7  r   r   r   r   BinaryThing3  s    
r<  574b4454ba8c5eb4f98a8f45r   z{"A":{"0":""}}z6Unsupported UTF-8 sequence length when encoding stringrT   rO   r   r   r   r   default_handlerz"},"B":{"0":1}})r   r1  rJ   rW   rX   OverflowErrorr}   )
r4   r<  r1  binthingdf_printabledf_nonprintabler[   r-  r   r   r   r   r   test_frame_nonprintable_bytes0  s*   




z1TestPandasContainer.test_frame_nonprintable_bytesc                 C   s<   t dd dgddgi }ddd  d}||ksJ d S )Nr!   i rO   r#   i9  {"z":{"0":1},"foo":{"0":1337}}r   r4   r   r   r   r   r   test_label_overflowV  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    n1 s$w   Y  t|t|jd	dd	d
d t|jdddd
d}t|j	|j	 d S )NrC   rD   rO   r   z.Series index must be unique for orient='index'rT   r/   rH   rN   series)r   typr   )
r	   rW   rX   rY   rJ   r   assert_series_equalr   assert_numpy_array_equalr   )r4   sr[   unserializedr   r   r   test_series_non_unique_index\  s   z0TestPandasContainer.test_series_non_unique_indexc                 C   rk   Nr/   rH   rl   )r4   string_seriesr   r   r   test_series_default_orientk  ro   z.TestPandasContainer.test_series_default_orientc                 C   P   |j |d}t|d|d}|}|dv r|jdd}|dkr d |_t|| d S NrH   rJ  rK  r   r   r   Tr   rN   rJ   r   r   r'   r   rL  )r4   r   rR  r]   r   r   r   r   r   test_series_roundtrip_simplen     z0TestPandasContainer.test_series_roundtrip_simplec                 C   sR   |j |d}t|d||d}|}|dv r|jdd}|dkr!d |_t|| d S )NrH   rJ  )rK  r   r*   rW  Tr   rN   rX  )r4   r   r*   object_seriesr]   r   r   r   r   r   test_series_roundtrip_objectz  s   z0TestPandasContainer.test_series_roundtrip_objectc                 C   s^   t g g tjd}|j|d}t|d|d}|jdd}|dv r'|jtj|_t	|| d S )Nr/   r*   rH   rJ  rV  Tr   rN   )
r	   r2   float64rJ   r   r   r/   r   r   rL  )r4   r   empty_seriesr]   r   r   r   r   r   test_series_roundtrip_empty  s   z/TestPandasContainer.test_series_roundtrip_emptyc                 C   rT  rU  rX  )r4   r   r=   r]   r   r   r   r   r    test_series_roundtrip_timeseries  rZ  z4TestPandasContainer.test_series_roundtrip_timeseriesc                 C   sZ   t tdg dd}|j|d}t|d|d}| }|dv r%|jdd	}t|| d S )
Nr   rC   rD   rE   rF   r   fr   rH   rJ  rV  rW  Tr   )r	   r   rJ   r   rK   r   r   rL  )r4   r   r*   rN  r]   r   r   r   r   r   test_series_roundtrip_numeric  s   z1TestPandasContainer.test_series_roundtrip_numericc                 C   r   r   )r	   rW   rX   rY   rJ   )r4   rN  r[   r   r   r   test_series_to_json_except  r   z.TestPandasContainer.test_series_to_json_exceptc                 C   s2   t g d}t| ddd}tj||dd d S )N=
ףp=@rg  rg  rJ  T)rK  precise_floatFr   )r	   r   rJ   r   rL  r4   rN  r   r   r   r   #test_series_from_json_precise_float  s   z7TestPandasContainer.test_series_from_json_precise_floatc                 C   s>   t g d}t| dtjd}t dgd }t|| d S )Nrf  rJ  rK  r*   rz   r`   )r	   r   rJ   r2   r(   r   rL  )r4   rN  r   r   r   r   r   test_series_with_dtype  s   z*TestPandasContainer.test_series_with_dtypezdtype,expected
2000-01-01re   r)   l    ,Uqc                 C   s4   t dgdd}| }t|d|d}t|| d S )Nrm  re   r)   rJ  rk  )r	   rJ   r   r   rL  )r4   r*   r   rN  r]   r   r   r   r   test_series_with_dtype_datetime  s   z3TestPandasContainer.test_series_with_dtype_datetimec                 C   s4   t g dg dg}t| dd}t|| d S )Nrf  T)rh  r   r   rJ   r   r   r4   rA   r   r   r   r   "test_frame_from_json_precise_float  s   z6TestPandasContainer.test_frame_from_json_precise_floatc                 C   s6   t tdg ddd}t| d d}t|| d S )Nr   rb  r(   r]  rK  )r	   r   r   rJ   r   rL  ri  r   r   r   test_typ  s   zTestPandasContainer.test_typc                 C   sf   t g dg dg}t| }t|| t g dg ddg dd}t| }t|| d S )Nr   r   rC   rD   )r   r   r   r   ro  rp  r   r   r   test_reconstruction_index  s   z-TestPandasContainer.test_reconstruction_indexc                 C   sR   t d}|||fD ]}|| t| qW d    d S 1 s"w   Y  d S )N	test.json)r   ensure_cleanrJ   r   )r4   rm   rv   rB   r  rA   r   r   r   	test_path  s   

"zTestPandasContainer.test_pathc                 C   sR   |  }t|}t|| |  }t|dd}tj||dd |jd u s'J d S )NrJ  rr  F)check_names)rJ   r   r   r   rL  r'   )r4   r=   rB   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 )Nra   r   r   r#   ns	date_unitFrd   r   r(   r   rJ  rr  )r
   rJ   r   r   r   rK   r   rh   r   r	   r/   rL  )r4   r=   rB   rA   r   r   r   r9   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r$d}nd	}|r.|d
d}||ks4J d S )Ni  rO   )yearmonthdayrC   r   r  r  z+{"1577836800000":1577836800000,"null":null}zA{"2020-01-01T00:00:00.000":"2020-01-01T00:00:00.000","null":null}}	,"a":"a"})r-   r   appendr	   rJ   replace)r4   r  r  r  r]   r<   r   r   r   r   r   test_date_index_and_values  s   
z.TestPandasContainer.test_date_index_and_values
infer_word)
trade_timer   datetimesold_atr   	timestamp
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idrO   l    $Arc   z
2002-11-08r   )	pandas.io.jsonr  r   r
   r-   r   r   r   r   )r4   r  r  r]   r   r   r   r   r   test_convert_dates_infer  s   z,TestPandasContainer.test_convert_dates_inferzdate,date_unit))20130101 20:43:42.123N)20130101 20:43:42rN  )r  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< |r*|jd|d}n|jdd}t|}| }t	
|| d S )Nr   rO   r    r  r  r}  r  )r
   r-   r   rg   r   r   rJ   r   rK   r   r   )r4   r   r}  rB   rA   r   r   r   r   r   r   test_date_format_frame5  s   z*TestPandasContainer.test_date_format_framec                 C   sJ   |}d}t jt|d |jddd W d    d S 1 sw   Y  d S )N*Invalid value 'foo' for option 'date_unit'rT   r  r#   r  )rW   rX   rY   rJ   )r4   rB   rA   r[   r   r   r   test_date_format_frame_raisesM  s
   "z1TestPandasContainer.test_date_format_frame_raisesc                 C   sn   t t||jd}tj|jd< tj|jd< |r|jd|d}n|jdd}t|dd}| }t	
|| d S )	Nr   rO   r    r  r  r  rJ  rr  )r	   r
   r/   r-   r   rg   rJ   r   rK   r   rL  )r4   r   r}  r=   r9   r   r   r   r   r   r   test_date_format_seriesS  s   z+TestPandasContainer.test_date_format_seriesc                 C   sX   t td|jd}d}tjt|d |jddd W d    d S 1 s%w   Y  d S )Nr  r   r  rT   r  r#   r  )r	   r
   r/   rW   rX   rY   rJ   )r4   r=   r9   r[   r   r   r   test_date_format_series_raisesi  s
   "z2TestPandasContainer.test_date_format_series_raisesunit)rN  r  r  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 )Nr  r   z19710101 20:43:42rO   z21460101 20:43:42rc   rz   r  r  r|  )
r
   r   r   rg   r-   r   rJ   r   r   r   )r4   r  rB   rA   dlr   r   r   r   r   test_date_unito  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   )r4   rN  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    rc   ABr   ra   r   intsTboolsr  )r  r  r)   )r   r2   randomrandnr0   r
   r   r-   r   r/   rJ   r   r(   bool_r   r   )r4   dfj2r   r   r   r   r   test_doc_example  s   z$TestPandasContainer.test_doc_examplec                 C   sF   |dddd}t |}| }t|}t|j|j|jd| d S )Nr   r   r]   z	teams.csvrG   )	r-   read_csvrJ   r   r   r   reindexr/   r   )r4   r  r  rA   rN  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)urlcheck_before_testzfield,dtype
created_atUTCtz	closed_at
updated_atc                 C   s&   d}t |dd}|| j|ksJ d S )Nr  Tr~  )r   r*   )r4   fieldr*   r  r   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J t| dd|}t|| t tdtddgt	d	d
gd}|jdks@J t| dd|}t|| t
tdtddg}|d	 jdkseJ t|t| | d S )Nc                 S   s   t j| ddS )Nr  r  )r-   to_timedelta)rP   r   r   r   <lambda>  s    z4TestPandasContainer.test_timedelta.<locals>.<lambda>   r    secondsztimedelta64[ns]rJ  rr  r   rO   r   )r	   r   r*   r   rJ   applyr   rL  r-   r   r   r   )r4   	converterr<   r   framer   r   r   test_timedelta  s   $z"TestPandasContainer.test_timedeltac                 C   sr   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 )Nr  daysr    r  rO   rc   ra   )startr  rC   rD   rE   r{  r|  r  rC   rE   )r   r   r-   r   r   rJ   r  rC   to_datetimerE   r   r   )r4   r  r   r   r   r   test_timedelta2  s   z#TestPandasContainer.test_timedelta2c                 C   sv   t d}td}td||gitd}tdt|dj|djgi}t|j	ddddid}t
j||dd	 d S )
Nr  ra   rC   r)   r{  r|  r(   Fr   )r   r
   r   r   r-   	Timedeltaas_unit_valuer   rJ   r   r   )r4   tdr9   r  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}|r*|d	d
}|j|d}||ks6J d S )NrO   r  rc   rC   r   r  zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}r  r  r  )r-   r   r  r	   r  rJ   )r4   r  r  r  r]   r<   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 )NrC      r@  Fr   )r   r   r}   r   rJ   r   r   )r4   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/J d S )Nr   r  c                 S   s(   t | trdd| jfd| jfgS t| S )N)mathjsComplexreim)
isinstancecomplexrealimagr}   objr   r   r   default	  s   
zBTestPandasContainer.test_default_handler_indirect.<locals>.default	   rO   STRrz   r   zN/Art  rC   rD   r   zR[9,[[1,null],["STR",null],[[["mathjs","Complex"],["re",4.0],["im",-5.0]],"N\/A"]]]r   rA  r   )r  r  r   r  r   )r4   r  r  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s&J d S )NrO   gffffff@rz   r  r   g333333?r   rt  rC   rD   r   zE[["(1+0j)","(nan+0j)"],["(2.3+0j)","(nan+0j)"],["(4-5j)","(1.2+0j)"]]r   r  )r   r  r   rJ   r}   )r4   rA   r   r   r   r   ,test_default_handler_numpy_unsupported_dtype  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    n1 s(w   Y  t jt d tdddtd	d
gij|d W d    d S 1 sPw   Y  d S )Nraisinc                    s   t  r>   )	TypeErrorr  r[   r   r   my_handler_raises+  s   zJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raisesrT   rC   rO   rc   r@  rz   r  )rW   rX   r  r   r   rJ   r  )r4   r  r   r  r   test_default_handler_raises(  s   "z/TestPandasContainer.test_default_handler_raisesc                 C   sn   t dg di}|d |d< | }|d d|d< || ks#J |d }|d }| | ks5J d S )Nr   )rC   rD   rE   rC   rD   rD   rC   r   category)r   rJ   r   )r4   rA   r   rN  scr   r   r   test_categorical7  s   z$TestPandasContainer.test_categoricalc                 C   s   t jdddd}|dd }t|t jdddd}| }||d< | }|| ks0J t|}t|}| | ksBJ d S )	Nra   r`   
US/Easternr  r  utcr  r?  r   )r-   r   
tz_converttz_localizer   rK   rJ   r	   )r4   tz_rangetz_naiverA   df_naiver   stzs_naiver   r   r   test_datetime_tzD  s   z$TestPandasContainer.test_datetime_tzc                 C   s   t tjdd}tj|jd d< |d}| }|| ks"J ttjd}tj|jd d< |d}| }|| ksCJ d S )Nr   rz      Sparse)	r   r2   r  r  r   r   r   rJ   r	   )r4   rA   sdfr   rN  ssr   r   r   test_sparseT  s   

zTestPandasContainer.test_sparser9   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J | }||dd|ks J d S )Nr   r  z"2013-01-10T05:00:00.000Z"T	iso_dates)r  r  to_pydatetime)r4   r9   r  expdtr   r   r   test_tz_is_utcd  s
   	z"TestPandasContainer.test_tz_is_utcc                 C   sL   ddl m} td}d}||dd|ksJ | }||dd|ks$J d S )Nr   r  z2013-01-10 05:00:00z"2013-01-10T05:00:00.000"Tr  )r  r  r
   r  )r4   r  r9   r  r  r   r   r   test_tz_is_naiveu  s   z$TestPandasContainer.test_tz_is_naiver  z2013-01-01 05:00:00Zrc   r  z2013-01-01 00:00:00r  z2013-01-01 00:00:00-0500c                 C   s   ddl m} d}d}||dd|ksJ t|}||dd|ks"J ||tdd|ks/J td|i}||dd}||ksAJ ||dtiddsNJ 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  DT)r  r  r   r   r   r   )r4   r  r  r  dfexpr  rA   r   r   r   r   test_tz_range_is_utc  s   	z(TestPandasContainer.test_tz_range_is_utcc                 C   s   ddl m} tjddd}d}d}||dd	|ksJ ||tdd	|ks(J td
|i}||dd	}||ks:J ||d
tidd	sGJ d S )Nr   r  z2013-01-01 05:00:00rc   r  z5["2013-01-01T05:00:00.000","2013-01-02T05:00:00.000"]zD{"DT":{"0":"2013-01-01T05:00:00.000","1":"2013-01-02T05:00:00.000"}}Tr  r  )r  r  r-   r   r   r   r   )r4   r  r  r  r	  rA   r   r   r   r   test_tz_range_is_naive  s   z*TestPandasContainer.test_tz_range_is_naivec                 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linesrO   rc   rC   rD   r   r   r   r   r   rH  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_optionsrO   rc   rC   rD   r   r  )r4   s3_resources3sor   r   r   r   r   test_read_s3_jsonl  s
   z&TestPandasContainer.test_read_s3_jsonlc              	   C   s   t d=}t|d}|d W d    n1 sw   Y  t|dd}tddgddggdd	gd
}t || W d    d S 1 sEw   Y  d S )Nztmp_items.jsonwr  Tr  rO   rc   rC   rD   r   )r   rw  openwriter   r   r   )r4   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#   rC   rD   r   )r   r   r   r   r   r4   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sJ t|tdgdgd}| }dt| d }||ks6J d S )	N	articleId)r*   r/   {"articleId":r  r   )r*   r/   r   {"0":{"articleId":r   )r	   r   rJ   r}   r   )r4   r  rJ  r   r   rA   r   r   r   test_to_json_large_numbers  s   z.TestPandasContainer.test_to_json_large_numbersl        l            c                 C   s   t dt| d }d}tjt|d t| W d    n1 s"w   Y  t dt| d }tjt|d t| W d    d S 1 sHw   Y  d S )Nr  r  z#Value is too small|Value is too bigrT   r  r   )r   r}   rW   rX   rY   r   )r4   r  r   r[   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"}rJ  rr  gg_SDr  r   z.{"0": {"articleId": "1404366058080022500245"}}r   rG   )r   r   r	   r   rL  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J t d
dgddggddgd}|jddd}d}||ks:J tt|dd| t ddgddggddgd}|jddd}d}||ksaJ tt|dd| d S )NrO   rc   rC   rD   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   rJ   r   r   r   r   r   r   r   test_to_jsonl  s   z!TestPandasContainer.test_to_jsonlz%GH#13774 encoding kwarg not supportedc                 C   s   g dg dg dg dg dg dg d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 q5q1ddd}|D ]}|| qId S )N)   E, 17       a   b   c)r$  r&  r'  r(  )s   EE, 17r%  r&  r'  r(  )r$     r&  r'  r(  )r%  r&  r'  r(  )r)  r&  r'  r(  )   Ar%  r&  r'  r(  r%  r'  r(  r*  c                 S   s   g | ]	}d d |D qS )c                 S   s$   g | ]}t |tr|d n|qS latin-1)r  r2  decode)r   rP   r   r   r   r   $  s   $ zFTestPandasContainer.test_latin_encoding.<locals>.<listcomp>.<listcomp>r   )r   rQ   r   r   r   r   #  s    z;TestPandasContainer.test_latin_encoding.<locals>.<listcomp>r  r)   r,  c                 S   sZ   t d}| j||d t||d}t j| |dd W d    d S 1 s&w   Y  d S )Nrv  )encodingF)check_categorical)r   rw  rJ   r   rL  )rN  r.  r  retrr   r   r   	roundtrip-  s
   "z:TestPandasContainer.test_latin_encoding.<locals>.roundtripr+  )r2   r   r   r  r	   )r4   r   examplesr*   valr1  rN  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s%J d S )NrC   rO   T)r/   deep)r   r}   memory_usagesumrJ   )r4   rA   size_before
size_afterr   r   r   "test_data_frame_size_after_to_json6  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 )NrO   rc   r`   rz   rG   tablerH   r   rJ   r   r   r   )r4   r/   r   r   dfjsonr   r   r   r   .test_from_json_to_json_table_index_and_columns@  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 )
NrO   rc   r   r   r   r   r  r=  rH   r>  )r4   r   r?  r   r   r   r   #test_from_json_to_json_table_dtypesK  s   z7TestPandasContainer.test_from_json_to_json_table_dtypes)rN   r   r/   r   c                 C   s   t tg dddtg dddtg dddtg dd	dtg d
ddtg dddd}|j|d}t||dddd	dddd}t|| d S )Nr   r(   r)   )Nr   r   r^  )N rE   r   TFTboolrC   rD   Nr  )z
2020-01-01Nz
2020-01-03re   )IntegerFloatObjectBoolCategoryDatetimerH   r   r*   )r   	from_dictr	   rJ   r   r   r   )r4   r   r   r?  r   r   r   r   %test_to_json_from_json_columns_dtypesR  s0   z9TestPandasContainer.test_to_json_from_json_columns_dtypes)rD   rE   c                 C   sn   t ddgddgddgd}|jdd	}d
}tjt|d t|d|d W d    d S 1 s0w   Y  d S )NrO   rc   r   r   r   r   r  r=  rH   z)cannot pass both dtype and orient='table'rT   rL  r   rJ   rW   rX   rY   r   )r4   r*   rA   r?  r[   r   r   r   !test_read_json_table_dtype_raisesp  s   "z5TestPandasContainer.test_read_json_table_dtype_raisesc                 C   st   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 d    d S 1 s3w   Y  d S )NrO   rc   r`   rz   r   r   r;  r<  rG   r=  rH   z0cannot pass both convert_axes and orient='table'rT   Tr   rO  )r4   rA   r?  r[   r   r   r   (test_read_json_table_convert_axes_raisesy  s   ""z<TestPandasContainer.test_read_json_table_convert_axes_raiseszdata, expectedrz   r    r   )r   r]   r#   r   r   r   r&   )r'   r]   )r'   r/   c                 C   s(   |j ddd}t|}||ksJ d S )NrN   Fr   r/   )rJ   r   loadsr4   r]   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s$J d S )Nr=  FrR  r   r   rH   )schemar]   )rJ   r   rS  r-   r   build_table_schemar   to_dictr4   r]   r   r   r   r   r   test_index_false_to_json_table  s   
z2TestPandasContainer.test_index_false_to_json_table)r   r/   r   r   c                 C   sb   t ddgddggddgd}d}tjt|d	 |j|d
d W d    d S 1 s*w   Y  d S )NrO   rc   rz   r    rC   rD   r   z?'index=False' is only valid when 'orient' is 'split' or 'table'rT   FrR  rV   rZ   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 )NrO   rc   r`   rz   rt  rR  rH   r>  )r4   r   r/   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}rJ  r/   rV  X   z2019-01-01 11:00:00r  r  r   )r   r	   r   r   rL  rH  r   r   r   test_read_timezone_information  s
   z2TestPandasContainer.test_read_timezone_informationr  )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>  r  r  )r4   r  r   r   r   r   r   test_read_json_with_url_value  s   z1TestPandasContainer.test_read_json_with_url_valuecompression)rB  z.gzz.bz2z.tarc                 C   sR   d d| }t jtd| dd t| W d    d S 1 s"w   Y  d S )N  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz.jsonzFile z does not existrT   )rW   rX   FileNotFoundErrorr   )r4   r`  long_json_pathr   r   r   'test_read_json_with_very_long_file_path  s   
"z;TestPandasContainer.test_read_json_with_very_long_file_pathzdate_format,key)r  i \&)r  
P1DT0H0M0Sc                 C   s@   t dggtdgd}d| d}|j|d}||ksJ d S )NrO   1Dr   rG  z
":{"0":1}}r  )r   r-   r  rJ   )r4   r  keyrA   r   r   r   r   r   test_timedelta_as_label  s   z+TestPandasContainer.test_timedelta_as_labelzorient,expected)r/   z{"('a', 'b')":{"('c', 'd')":1}})r   z{"('c', 'd')":{"('a', 'b')":1}}rB  z,Produces JSON but not in a consistent manner)marksc                 C   s2   t dggdgdgd}|j|d}||ksJ d S )NrO   rt  )rE   rF   rG   rH   r   r4   r   r   rA   r   r   r   r   test_tuple_labels  s   z%TestPandasContainer.test_tuple_labelsindent)rO   rc   rz   c                 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sAJ d S )Nr#   r!   r"   r   rC   rD   r   rl   z{
z"a":{
z"0":"foo",
z
"1":"baz"
z},
z"b":{
z"0":"bar",
z
"1":"qux"
z}
}r   )r4   rl  rA   r   spacesr   r   r   r   test_to_json_indent#  s:   z'TestPandasContainer.test_to_json_indent))rN   z{
    "columns":[
        "a",
        "b"
    ],
    "index":[
        0,
        1
    ],
    "data":[
        [
            "foo",
            "bar"
        ],
        [
            "baz",
            "qux"
        ]
    ]
})r   zf[
    {
        "a":"foo",
        "b":"bar"
    },
    {
        "a":"baz",
        "b":"qux"
    }
])r/   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sJ d S )
Nr#   r!   r"   r   rC   rD   r   rz   )r   rl  r   rj  r   r   r   test_json_indent_all_orients7  s   wz0TestPandasContainer.test_json_indent_all_orientsc                 C   sB   t jtdd t jdd W d    d S 1 sw   Y  d S )Nzmust be a nonnegative integerrT   rm  )rW   rX   rY   r   rJ   r6  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"]rC   NaNInfinityz	-Infinity)r   r   r2   r   r   r   r   rY  r   r   r   test_emca_262_nan_inf_support  s   z1TestPandasContainer.test_emca_262_nan_inf_supportc                 C   s>   t ddiddig}tdddgi}t|}t|| d S )Ncol31900441201190696999Text)r   r  r   r   r   r   )r4   encoded_jsonr   r   r   r   r   test_frame_int_overflow  s   z+TestPandasContainer.test_frame_int_overflowzdataframe,expectedr  rP   rQ   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J d S rQ  )stackrJ   )r4   	dataframer   rJ  r   r   r   r   test_json_multiindex  s   z(TestPandasContainer.test_json_multiindexc                 C   s   d\}}t g dg dd}|jd| d| |d d}	 |d
d |dj D v r0d S td |d8 }|dksAJ dq)N)pandas-testrv  r   )rc   rz   r   r|  zs3:///)r  r    Tc                 s   s    | ]}|j V  qd S r>   )rg  )r   r  r   r   r   	<genexpr>  s    
z1TestPandasContainer.test_to_s3.<locals>.<genexpr>r  r   r   z,Timed out waiting for file to appear on moto)r   rJ   Bucketobjectsalltimesleep)r4   r  r  mock_bucket_nametarget_filerA   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 J d S )Nznot implementedr   z{"0":{"0":null}})	r  r   rW   r   r   r   r   r   rJ   )r4   nulls_fixturer   r   r   r   r   r   test_json_pandas_nulls  s
   
z*TestPandasContainer.test_json_pandas_nullsc                 C   s(   t ddd}tg d}t|| d S )Nz[true, true, false]rJ  rr  )TTF)r   r	   r   rL  rH  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sJ d S )NTz
2017-01-20z
2017-01-23r#   r!   rG   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}  rJ   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s#J d S )
Nc                   @   s   e Zd ZdddZdd ZdS )zGTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObjectr0  Nc                 S   s   || _ || _|| _|| _d S r>   rC   rD   _crF   )r4   rC   rD   r  rF   r   r   r   r5  
  s   
zPTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.__init__c                 S   s   dS )Nr    r   r6  r   r   r   r     s   zITestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.er8  )r9  r:  r;  r5  r   r   r   r   r   _TestObject	  s    
r  rO   rc   r`   rz   r  0)rC   rD   rF   )r	   r   rS  rJ   )r4   r  rJ  r   r   r   test_to_json_series_of_objects  s   &z2TestPandasContainer.test_to_json_series_of_objectszdata,expectedy             @y              ?y      "@      )r   rO   rc   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
J d S r>   rl   rT  r   r   r   test_complex_data_tojson  s   #z,TestPandasContainer.test_complex_data_tojsonc                 C   s2   d}t dddgid}|jdd}||ksJ d S )NzY{"columns":["col1"],"index":[0,1],"data":[[13342205958987758245],[12388075603347835679]]}col1l   :!c&HI l   v8$Z_
 )r]   rN   rH   r   )r4   r   rA   r   r   r   r   test_json_uint64=  s
   z$TestPandasContainer.test_json_uint64)rN   r   r   r/   r   c           	   
      s  t dttdtjdgddtg dddtdtjdgd	dtg d
d	dg dg dg dg dd}|dkrTttjg dtjd}ttjddt	gtjd}nt
g d}t
g d}|j|d}td| t|||d}W d    n1 sw   Y  ttdtjdgddtg dddtdtjdgd	dtg d
d	dtddt	gddtg ddd||d|dkrddlm  t fddjD |dkrttdd_t| d S )NpyarrowrO   r`   Int64r)   r   r^   r_   Float64)r^   r   r_   )TFNrC  r  rE  )rC   rD   rE   rF   r   rc  ghpythonrC   rD   rH   mode.string_storage)dtype_backendr   TFbooleanr   ArrowExtensionArrayc                    s$   i | ]}| j | d dqS )Tfrom_pandas)array)r   rw  r  r   par   r   
<dictcomp>w  s    zDTestPandasContainer.test_read_json_dtype_backend.<locals>.<dictcomp>r   r  )rW   importorskipr   r	   r2   r   r   r  object_r   r   rJ   r-   option_contextr   pandas.arraysr  r   r0   r   r   r   )	r4   string_storager  r   rA   string_arraystring_array_naoutr   r   r  r   test_read_json_dtype_backendG  sT   
z0TestPandasContainer.test_read_json_dtype_backend)rN   r   r/   c           
      C   s   t d}tdtjdgdd}|j|d}td| t|||dd	}W d    n1 s.w   Y  tdtjdgdd}|dkrRd
dl	m
}	 t|	|j|dd}t|| d S )Nr  rO   r`   r  r)   rH   r  rJ  )r  r   rK  r   r  Tr  )rW   r  r	   r2   r   rJ   r-   r  r   r  r  r  r   rL  )
r4   r  r  r   r  r<   r  r   r   r  r   r   r   test_read_json_nullable_series  s   
z2TestPandasContainer.test_read_json_nullable_seriesc                 C   sD   d}t jt|d tddd W d    d S 1 sw   Y  d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rT   r   numpy)r  )rW   rX   rY   r   )r4   r[   r   r   r   test_invalid_dtype_backend  s
   "z.TestPandasContainer.test_invalid_dtype_backend)r9  r:  r;  rW   fixturer8   r=   rB   rM   r   parametrizerR   r\   r
   ri   rj   rn   r   ru   r2   r(   rw   r^  intr   r   r   r   r   r   AssertionErrorr   r  r   r   r   r   NINFr   skipifr   r   r   r   r   r   r  r/  rF  rI  rP  rS  rY  r\  r`  ra  rd  re  rj  rl  r	   rn  rq  rs  ru  rx  rz  r  r  r   r  r  r  r  r  r  r  r  r  r  networkr   r-   DatetimeTZDtyper  r  r  r  r  r   r  r  r  r  r  r  r  r   r  r  r   r
  r  r  
single_cpur  skip_if_not_us_localer  r  r  sysmaxsizer   r!  r"  r#  r  r4  r:  r@  rA  rN  rP  rQ  r   rename_axisrU  rZ  r[  r\  r^  r_  rd  rh  paramrk  rp  rq  rs  rv  r{  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   (   s   




	






"
	`&











	

		


!
(" (&( 	 (& 
	
u	
	!

8r   c                  C   sT   t td} |  }tjtdd t|dd W d    d S 1 s#w   Y  d S )NrO   zThe engine type foorT   r#   )enginer	   r   rJ   rW   rX   rY   r   r<   r  r   r   r   test_invalid_engine  s
   "r  c                  C   sV   t td} |  }tjtdd t|ddd W d    d S 1 s$w   Y  d S )NrO   z&currently pyarrow engine only supportsrT   r  F)r  r  r  r  r   r   r   test_pyarrow_engine_lines_false  s
   "r  )%r  r   decimalr   r   r   r   r   r  r  r  r2   rW   pandas.compatr   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr-   r   r   r   r	   r
   r   pandas._testing_testingr   pandas.core.arraysr   r   r   r   r  r  r   r   r   r   <module>   sF                    