a
    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!d
d Z"G dd dZ#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  t ddgddggddgd} d}d}tjt|d4 zt|d	d
 W n tyV   Y n0 W d    n1 sl0    Y  tjt|d  t|  d	d
 W d    n1 s0    Y  tjt|d( tddd
}t||  W d    n1 s0    Y  tjt|d6 ztdd	d
}W n ty.   Y n0 W d    n1 sF0    Y  tjt|dB ztdd	d
}W n ty   Y n0 t||  W d    n1 s0    Y  d S )N      abcolumnsz[{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}zPassing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.matchFlines!{"a": 1, "b": 2}
{"b":2, "a" :1}
T4{"a\\":"foo\\","b":"bar"}
{"a\\":"foo\"","b":"bar"}
)r   tmassert_produces_warningFutureWarningr   
ValueErrorto_jsonassert_frame_equal)expectedZjsonlmsgresult r#   i/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/io/json/test_pandas.pytest_literal_json_deprecation    s8    $.*
&r%   c                 C   s<   |dv r|j dd}|dkr,tt|j|_t| | d S )N)recordsvaluesTdropr'   )reset_indexrangelenr   r   r   )r"   r    orientr#   r#   r$   assert_json_roundtrip_equalM   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 Z/dgdh Z0didj Z1dkdl Z2dmdn Z3dodp Z4ej	
d'd(d/gdqdr Z5dsdt Z6dudv Z7ej	
d'ejegdwdx Z8dydz Z9d{d| Z:d}d~ Z;ej	
dd*e<dgdd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 ZLej	
dg ddd ZMdd ZNdd ZOdd ZPej	jQej	jRej	
ddeSjTddgddgdeSjTddggdd ZUdd ZVdd ZWdd ZXej	
dd*d(gej	
dddgej	
deSjYeZgddĄ Z[ddƄ Z\ddȄ Z]ddʄ Z^dd̄ Z_dd΄ Z`ddЄ Zadd҄ Zbej	
dedԃeddded׃gddل Zcddۄ Zdej	
deSjedddߍeSjeddddeSjedddߍgdd Zfdd Zgdd Zhej	jReijjdd Zkdd Zldd Zmej	
denjod enjod  gdd Zpej	
dddgdd Zqdd Zrdd Zsej	jdetd<ej	
dg dg dg dg dg d g dg dejudddgdejudddgg	ej	
d'devgdd	 Zwd
d Zxej	
dd/d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 Zydd Zzej	
d	g ddd Z{ej	
d'd*eedgdd Z|ej	
d	g ddd Z}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. Ze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/d0 Zej	
d	ddgd1d2 Zej	
d	d3dgd4d5 Zej	
d	dd6gej	
dd*d(gd7d8 Zd9d: Zej	
d;g d<d=d> Zej	
d?g d@dAdB Zej	
dCdDdEgdFdG Zej	
dHdIdJejddKej	jdLdTdMejd6dKej	jdLdTdMgdNdO Zej	
dPg dQdRdS Zej	
dHg dTdUdV ZdWdX ZdYdZ Zd[d\ Zej	
d]eg d(g d^d_d`fgdadb Zej	jRdcdd Zdedf Zdgdh Zdidj Zdkdl Zej	
dme<dndodpdqdrfe<dsdtdudqdvfedwdxgdydzggd{fed|d}gd~dggdfgdd Zdd Zej	
d	g ddd Zej	
d	g ddd Zdd Zd/S (  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 )NZbah   barbazfoo   Enameint64dtypesort)r   ZgetSeriesDatar   r,   pdZCategoricalIndexindexlistreversednpZarange)selfZ_seriesdZ
_cat_framecatr#   r#   r$   categorical_frameV   s    0z%TestPandasContainer.categorical_framec                 C   s    t  }d|_|jd |_|S )Nts)r   ZmakeTimeSeriesr7   r=   
_with_freq)rA   serr#   r#   r$   datetime_seriesb   s    z#TestPandasContainer.datetime_seriesc                 C   s   t t }|jd |_|S N)r   r   ZgetTimeSeriesDatar=   rE   )rA   dfr#   r#   r$   datetime_framek   s    z"TestPandasContainer.datetime_framec                 C   sV   t ddgddggddgddgd	}t|j|d
}t||d
}| }t||| d S )Nr   r   cdz	index " 1z	index / 2za \ bzy / zr=   r   r-   r   r   r   r   copyr.   rA   r-   rI   datar"   r    r#   r#   r$    test_frame_double_encoded_labelss   s    z4TestPandasContainer.test_frame_double_encoded_labelsr-   )splitr&   r'   c                 C   sV   t ddgddggddgddgd}t|j|d	}t||d	}| }t||| d S )
Nr   r   rK   rL   r   xyrM   rN   rO   rQ   r#   r#   r$   test_frame_non_unique_index   s
    "z/TestPandasContainer.test_frame_non_unique_indexr=   r   c                 C   sl   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    n1 s^0    Y  d S )Nr   r   rK   rL   r   rU   rV   rM   z+DataFrame index must be unique for orient=''r   rN   r   pytestraisesr   r   rA   r-   rI   r!   r#   r#   r$   "test_frame_non_unique_index_raises   s    "z6TestPandasContainer.test_frame_non_unique_index_raisesrT   r'   rR   r   r   rK   rL         ?      @g      @g      @r      20130101Z20130102c                 C   s   t |ddgddgd}t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|}ddg|_	t
|| d S )Nr   r   rU   rM   rN   )r-   convert_datesr'   r   datetime64[ns]@B rT   zx.1)r   r   r   r   ilocr:   viewr@   r8   r   r   r   )rA   r-   rR   rI   r"   r    r#   r#   r$   test_frame_non_unique_columns   s    .
z1TestPandasContainer.test_frame_non_unique_columns)r=   r   r&   c                 C   sl   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    n1 s^0    Y  d S )Nr   r   rK   rL   r   r   rU   rM   z-DataFrame columns must be unique for orient='rX   r   rN   rY   r\   r#   r#   r$   $test_frame_non_unique_columns_raises   s    "z8TestPandasContainer.test_frame_non_unique_columns_raisesc                 C   s   |  |j ddksJ d S )Nr   rN   r   )rA   float_framer#   r#   r$   test_frame_default_orient   s    z-TestPandasContainer.test_frame_default_orientr:   Fconvert_axesTc                 C   s4   t |j|d}t||||d}|}t||| d S NrN   r-   rl   r:   r   r   r   r.   )rA   r-   rl   r:   rj   rR   r"   r    r#   r#   r$   test_roundtrip_simple   s    z)TestPandasContainer.test_roundtrip_simplec                 C   s4   t |j|d}t||||d}|}t||| d S rm   ro   )rA   r-   rl   r:   	int_framerR   r"   r    r#   r#   r$   test_roundtrip_intframe   s    z+TestPandasContainer.test_roundtrip_intframeNZU3c                 C   s   t tddd tdD dd tdD |d}t|j|d}t||||d	}| }|sj|tj	}|r|d
v 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>       z?TestPandasContainer.test_roundtrip_str_axes.<locals>.<listcomp>rt   c                 S   s   g | ]}t |qS r#   ru   rw   r#   r#   r$   rz      r{   rs   )r   r=   r:   rN   rn   rM   r&   rT   )r   r@   zerosr+   r   r   r   rP   astyper8   r   r=   r.   )rA   r-   rl   r:   rI   rR   r"   r    r#   r#   r$   test_roundtrip_str_axes   s&    z+TestPandasContainer.test_roundtrip_str_axesc                 C   sr   |dv r&|j tjjd| dd t|j|d}t|||d}| }|j	
t|_	d |j	_t||| d S )NrM   z.Can't have duplicate index values for orient 'z')reasonrN   r-   rl   )node
add_markerrZ   markxfailr   r   r   rP   r=   r}   rv   r7   r.   )rA   requestr-   rC   rl   rR   r"   r    r#   r#   r$   test_roundtrip_categorical   s    
z.TestPandasContainer.test_roundtrip_categoricalc                 C   sx   t  }t|j|d}t|||d}|dkrPtjg |r:tntd}t ||d}n|dv r`t  }n| }t	
|| d S )NrN   r   rT   r9   rM   )r   r   r   r   r<   IndexfloatobjectrP   r   r   )rA   r-   rl   Zempty_framerR   r"   idxr    r#   r#   r$   test_roundtrip_empty   s    z(TestPandasContainer.test_roundtrip_emptyc                 C   sd   t |j|d}t|||d}| }|sT|jtjd }|dkrN|t	}||_t
||| d S )NrN   r   rd   rT   )r   r   r   rP   r=   rf   r@   r8   r}   rv   r.   )rA   r-   rl   rJ   rR   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}t|j|d}t|||d	}| }|jf i |d
	t
j}t||| d S )N)r   r   rK   rL   e)              ?       @      @      @)r   r   r   r   r   )Zfoo1Zfoo2Zfoo3Zfoo4Zfoo5)TFTFTABCD)rR   r=   rN   r   number)r<   r   r   r   r   r   rP   ZassignZselect_dtypesr}   r@   r8   r.   )	rA   r-   rl   r=   r'   rI   rR   r"   r    r#   r#   r$   test_roundtrip_mixed  s    z(TestPandasContainer.test_roundtrip_mixedz9#50456 Column multiindex is stored and loaded differently)r   r[   Z2022ZJANZFEBZ2023c                 C   sL   t ddgddggtj|d}t|jdd}t|dd}t|| d S )Nr   r   r`   rt   r   rT   rN   )	r   r<   Z
MultiIndexZfrom_arraysr   r   r   r   r   )rA   r   rI   rR   r"   r#   r#   r$   test_roundtrip_multiindex2  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 columnsrT   )zN{"badkey":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}zunexpected key\(s\): badkeyrT   c                 C   sB   t jt|d  tt||d W d    n1 s40    Y  d S )Nr   rN   )rZ   r[   r   r   r   )rA   rR   r!   r-   r#   r#   r$   $test_frame_from_json_bad_data_raisesG  s    #z8TestPandasContainer.test_frame_from_json_bad_data_raisesc                 C   s   t ddgg dg}tt|j|d|||d}t|jd sDJ t ddgg d	g}tt|j|d|||d}t|jd sJ d S )
Nr   r   rt   r0      rN   rn   r   r   12)456)r   r   r   r   r@   isnanre   )rA   r-   rl   r:   Znum_dfr"   Zobj_dfr#   r#   r$   !test_frame_from_json_missing_datam  s     z5TestPandasContainer.test_frame_from_json_missing_datac                 C   s,   t td|d}ttjg}t|| d S )Nz[null]r9   )r   r   r   r@   nanr   r   )rA   r:   r"   r    r#   r#   r$   (test_frame_read_json_dtype_missing_value  s    z<TestPandasContainer.test_frame_read_json_dtype_missing_valueinfc                 C   sN   t ddgg dg}||jd< t| }t||d}t|jd sJJ d S )Nr   r   r   r   r9   )r   locr   r   r   r@   r   re   )rA   r   r:   rI   rR   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?r   r   )g333333?r   r   )g333333r   g       )gףp=
?r   r   )gCl?r`   r   )g?r4   r   c                 C   s2   t d|ig}|j|d}|d| dks.J d S )NZa_float)Zdouble_precisionz{"a_float":{"0":}}r   r   )rA   valueZ	precisionZexpected_valrI   encodedr#   r#   r$   "test_frame_to_json_float_precision  s    z6TestPandasContainer.test_frame_to_json_float_precisionc                 C   sN   t g d}d}tjt|d |jdd W d    n1 s@0    Y  d S Nr   r   r`   z+Invalid value 'garbage' for option 'orient'r   garbagerN   rY   )rA   rI   r!   r#   r#   r$   test_frame_to_json_except  s    z-TestPandasContainer.test_frame_to_json_exceptc                 C   sJ   t ddgd}|jrJ t| }t|t|jd}tj||dd d S )Njimjoer   r9   Fcheck_index_type)	r   _is_mixed_typer   r   r   dictdtypesr   r   )rA   rI   rR   r"   r#   r#   r$   test_frame_empty  s
    
z$TestPandasContainer.test_frame_emptyc                 C   s0   t dg ig d}|jdd}d}||ks,J d S )Ntestr=   r   rN   z{"test":{}}r   rA   rI   r"   r    r#   r#   r$   test_frame_empty_to_json  s    z,TestPandasContainer.test_frame_empty_to_jsonc                 C   sX   t ddgd}|d d|d< |js*J | }tjtt|t|j	d|dd d S )Nr   r   r   i8r9   Fr   )
r   r}   r   r   r   r   r   r   r   r   )rA   rI   rR   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 ].}t|j|d	}t||d
d}t|| qHt	
t||_t|jdd	}t|dd
d}t|| t	
|jd |_t|jdd	}t|dd
d}t|| d S )N)
   r   r3   皙?g{Gz?)   r   r1   g?g{Gz?)   r`   r2   g333333?gQ?)(   rt   quxg?g{Gz?Zabcd)Z1stZ2ndZ3rdZ4thZ5thrM   )rT   r=   r   rN   Fr   r&   r   r'   )r   r>   r   rP   r   r   r   r   r   r<   Z
RangeIndexr,   r=   shaper   )rA   valsrI   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|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nsdatera   r`   modifiedr   iojsonrR   ztsframe_v012.json)Zaxisztsframe_iso_v012.json)r<   
date_ranger   r@   Zasarrayr   r
   as_unitre   r   get_locNaTospathjoinr   r   r   r)   )
rA   datapathdtirI   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g dg dg dg d	g d
g dd|d}|jd|_t|jdd}t	|dd}t
j||ddddd d S )NZ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 )
Z78c608f1Z64a99743Z13d2ff52Zca7f4af2Z97236474Zbde7e214Z1a6bde47Zb1190be5Z7a669144Z8d64d068)
gD!gIxJ g%
@gP\<g޿gPl?gFzn?g5mH/?gpH%gI?)
Z14f04af9Zd085da90Z4bcfac83Z81504cafZ2ffef4a9Z08e2f5c4Z07e1af03Zaddbd4a7Z1f6a09baZ4bfc4d87)
i/iiYi6iI i;>i	i( i0q{iѪ)Zfloat_1Zint_1Zstr_1Zfloat_2Zstr_2Zint_2r   unicoderT   rN   T)r   Zcheck_column_typeZ	by_blocksZcheck_exact)r<   r   r   r>   r   r   r}   r   r   r   r   r   )rA   r=   df_mixedrR   Z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sBJ t d|gi}d}tjt|d |  W d    n1 s0    Y  t |gd	gd
ddgd}tjt|d |  W d    n1 s0    Y  |jtd}d| d}	||	ksJ |jtdd| dksJ d S )Nc                   @   s(   e Zd ZddddZedddZdS )zFTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThingNreturnc                 S   s   || _ t|| _d S rH   )hexedbytesfromhexbinary)rA   r   r#   r#   r$   __init__j  s    zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__c                 S   s   | j S rH   )r   rA   r#   r#   r$   __str__n  s    zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__)__name__
__module____qualname__r   rv   r   r#   r#   r#   r$   BinaryThingi  s   r   Z574b4454ba8c5eb4f98a8f45r   z{"A":{"0":""}}z6Unsupported UTF-8 sequence length when encoding stringr   r   r   r   r   r   default_handlerz"},"B":{"0":1}})r   r   r   rZ   r[   OverflowErrorrv   )
rA   r   r   ZbinthingZdf_printableZdf_nonprintabler!   r   r"   r    r#   r#   r$   test_frame_nonprintable_bytesf  s&    &&

z1TestPandasContainer.test_frame_nonprintable_bytesc                 C   s<   t dd dgddgi }ddd  d}||ks8J d S )Nr1   i r   r3   i9  {"z":{"0":1},"foo":{"0":1337}}r   rA   r"   r    r#   r#   r$   test_label_overflow  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 sH0    Y  t|tt|jd	dd	d
d tt|jdddd
d}t	|j
|j
 d S )Nr   r   r   r   z.Series index must be unique for orient='index'r   r=   rN   rT   series)r-   typr&   )r	   rZ   r[   r   r   r   assert_series_equalr   r   Zassert_numpy_array_equalr'   )rA   sr!   Zunserializedr#   r#   r$   test_series_non_unique_index  s    *z0TestPandasContainer.test_series_non_unique_indexc                 C   s   |  |j ddksJ d S )Nr=   rN   ri   )rA   string_seriesr#   r#   r$   test_series_default_orient  s    z.TestPandasContainer.test_series_default_orientc                 C   sT   t |j|d}t|d|d}|}|dv r6|jdd}|dkrDd |_t|| d S NrN   r   r   r-   r'   r&   Tr(   rT   r   r   r   r*   r7   r   r   )rA   r-   r  rR   r"   r    r#   r#   r$   test_series_roundtrip_simple  s    z0TestPandasContainer.test_series_roundtrip_simplec                 C   sV   t |j|d}t|d||d}|}|dv r8|jdd}|dkrFd |_t|| d S )NrN   r   )r   r-   r:   r  Tr(   rT   r  )rA   r-   r:   Zobject_seriesrR   r"   r    r#   r#   r$   test_series_roundtrip_object  s    z0TestPandasContainer.test_series_roundtrip_objectc                 C   sb   t g g tjd}t|j|d}t|d|d}|jdd}|dv rR|jtj|_t	
|| d S )Nr=   r:   rN   r   r  Tr(   rT   )r	   r@   float64r   r   r   r*   r=   r}   r   r   )rA   r-   Zempty_seriesrR   r"   r    r#   r#   r$   test_series_roundtrip_empty  s    z/TestPandasContainer.test_series_roundtrip_emptyc                 C   sT   t |j|d}t|d|d}|}|dv r6|jdd}|dkrDd |_t|| d S r  r  )rA   r-   rG   rR   r"   r    r#   r#   r$    test_series_roundtrip_timeseries  s    z4TestPandasContainer.test_series_roundtrip_timeseriesc                 C   s^   t tdg dd}t|j|d}t|d|d}| }|dv rN|jdd	}t|| d S )
Nr   r   r   rK   rL   r   fr   rN   r   r  r  Tr(   )	r	   r+   r   r   r   rP   r*   r   r   )rA   r-   r:   r  rR   r"   r    r#   r#   r$   test_series_roundtrip_numeric  s    z1TestPandasContainer.test_series_roundtrip_numericc                 C   sN   t g d}d}tjt|d |jdd W d    n1 s@0    Y  d S r   )r	   rZ   r[   r   r   )rA   r  r!   r#   r#   r$   test_series_to_json_except  s    z.TestPandasContainer.test_series_to_json_exceptc                 C   s6   t g d}tt| ddd}tj||dd d S )N=
ףp=@r  r  r   T)r   precise_floatFr   )r	   r   r   r   r   r   rA   r  r"   r#   r#   r$   #test_series_from_json_precise_float  s    z7TestPandasContainer.test_series_from_json_precise_floatc                 C   sB   t g d}tt| dtjd}t dgd }t|| d S )Nr  r   r   r:   rt   r`   )r	   r   r   r   r@   r8   r   r   )rA   r  r"   r    r#   r#   r$   test_series_with_dtype  s    z*TestPandasContainer.test_series_with_dtypezdtype,expected
2000-01-01rc   r9   l    ,Uqc                 C   s8   t dgdd}t| }t|d|d}t|| d S )Nr  rc   r9   r   r  )r	   r   r   r   r   r   )rA   r:   r    r  rR   r"   r#   r#   r$   test_series_with_dtype_datetime  s    z3TestPandasContainer.test_series_with_dtype_datetimec                 C   s8   t g dg dg}tt| dd}t|| d S )Nr  T)r  r   r   r   r   r   r   rA   rI   r"   r#   r#   r$   "test_frame_from_json_precise_float  s    z6TestPandasContainer.test_frame_from_json_precise_floatc                 C   s:   t tdg ddd}tt| d d}t|| d S )Nr   r  r8   r  r   )r	   r+   r   r   r   r   r   r  r#   r#   r$   test_typ  s    zTestPandasContainer.test_typc                 C   sn   t g dg dg}tt| }t|| t g dg ddg dd}tt| }t|| d S )Nr   r   r   r   )r   r   r   r   r  r  r#   r#   r$   test_reconstruction_index  s    z-TestPandasContainer.test_reconstruction_indexc                 C   sP   t d2}|||fD ]}|| t| qW d    n1 sB0    Y  d S )N	test.json)r   ensure_cleanr   r   )rA   rj   rq   rJ   r   rI   r#   r#   r$   	test_path  s    
zTestPandasContainer.test_pathc                 C   sZ   t | }t|}t|| t | }t|dd}tj||dd |jd u sVJ d S )Nr   r  F)Zcheck_names)r   r   r   r   r   r   r7   )rA   rG   rJ   r   r"   r#   r#   r$   test_axis_dates  s    z#TestPandasContainer.test_axis_datesc                 C   s   |}t dd|d< t| }t|}t|| d|d< t|jdd}t|dd}| }|d j	d	|d< |d 
d
|d< t|| tt dd|jd}t| }t|dd}t|| d S )Nra   r   r   r   r3   	date_unitFrb   r   r8   r   r   r  )r
   r   r   r   r   r   r   rP   r'   rf   r}   r	   r=   r   )rA   rG   rJ   rI   r   r"   r    rD   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shJ d S )Ni  r   )yearmonthdayr   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	   r   replace)rA   r+  r.  r/  rR   rF   r"   r    r#   r#   r$   test_date_index_and_values?  s    
z.TestPandasContainer.test_date_index_and_values
infer_word)Z
trade_timer   datetimeZsold_atr   	timestampZ
timestampsc                 C   sj   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t||d|g }t	|| d S )	Nr   dumpsidr   l    $Ar   z
2002-11-08r   )
pandas.io.jsonr=  r   r
   r<   r   r   r   r   r   )rA   r9  r=  rR   r    r"   r#   r#   r$   test_convert_dates_inferV  s    z,TestPandasContainer.test_convert_dates_inferzdate,date_unit))20130101 20:43:42.123N)20130101 20:43:42r  )rA  ms)z20130101 20:43:42.123456us)z20130101 20:43:42.123456789r   c                 C   s   |}t |d|d< tj|jd|jdf< tj|jd|jdf< |rZ|jd|d}n|jdd}tt	|}|
 }t|| d S )Nr   r   r   r0   r-  r+  r(  r3  )r
   r   r<   r   re   r   r   r   r   r   rP   r   r   )rA   r   r(  rJ   rI   r   r"   r    r#   r#   r$   test_date_format_framen  s    z*TestPandasContainer.test_date_format_framec                 C   sH   |}d}t jt|d |jddd W d    n1 s:0    Y  d S )N*Invalid value 'foo' for option 'date_unit'r   r-  r3   rE  )rZ   r[   r   r   )rA   rJ   rI   r!   r#   r#   r$   test_date_format_frame_raises  s    z1TestPandasContainer.test_date_format_frame_raisesc                 C   sx   t t|d|jd}tj|jd< tj|jd< |rD|jd|d}n|jdd}tt	|dd	}|
 }t|| d S )
Nr   r   r   r0   r-  rE  r3  r   r  )r	   r
   r   r=   r<   r   re   r   r   r   rP   r   r   )rA   r   r(  rG   rD   r   r"   r    r#   r#   r$   test_date_format_series  s    z+TestPandasContainer.test_date_format_seriesc                 C   sV   t td|jd}d}tjt|d |jddd W d    n1 sH0    Y  d S )NrA  r   rG  r   r-  r3   rE  )r	   r
   r=   rZ   r[   r   r   )rA   rG   rD   r!   r#   r#   r$   test_date_format_series_raises  s    z2TestPandasContainer.test_date_format_series_raisesunit)r  rC  rD  r   c                 C   s   |}t dd|d< |jd}t d|jd|f< t d|jd|f< tj|jd|f< |jd	|d
}tt	||d}t
|| tt	|d d}t
|| d S )NrB  r   r   z19710101 20:43:42r   z21460101 20:43:42r   rt   r,  rE  r'  )r
   r   r   r   re   r<   r   r   r   r   r   r   )rA   rK  rJ   rI   dlr   r"   r#   r#   r$   test_date_unit  s    z"TestPandasContainer.test_date_unit)r  rC  rD  c                 C   s   t td|gd| dd}tttd|gd| d|dttd|gt|dd}t }|j|d|d	 |d
 t	j
t|ddgd|ddd d S )Nz2023-01-01T11:22:33.123456zdatetime64[]r9   z2022-01-01T11:22:33.123456r:   r=   )r   date_objr-  rE  r   r   rP  r)  F)r   Zcheck_dtype)r   r@   Z
datetime64r   r	   r   r   r   seekr   r   r   )rA   rK  r=   rI   bufr#   r#   r$   test_iso_non_nano_datetimes  s4    


z/TestPandasContainer.test_iso_non_nano_datetimesc                 C   s   d}t 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   )rA   r  r#   r#   r$   test_weird_nested_json  s    z*TestPandasContainer.test_weird_nested_jsonc                 C   s   t tjddtdd}td|d< td|d< d	|d
< tj	ddd|_
t| }t|tjtjdd}t|| d S )Nr   )r0   r   ZABr   ra   r   r0   intsTboolsr   )rU  rV  r9   )r   r@   randomdefault_rngstandard_normalr>   r
   r+   r<   r   r=   r   r   r   r8   Zbool_r   r   )rA   Zdfj2r   r"   r#   r#   r$   test_doc_example  s    z$TestPandasContainer.test_doc_examplec                 C   s   |dddd}t |}| }tt|}|j|j|jd}d}tj	t
|d  |jtjdd	}W d    n1 sv0    Y  t|| d S )
Nr   r   rR   z	teams.csvrM   z.The 'downcast' keyword in fillna is deprecatedr   F)Zdowncast)r<   Zread_csvr   r   r   Zreindexr=   r   r   r   r   Zfillnar@   r   r   )rA   r   r   rI   r  r"   resr!   r#   r#   r$   test_round_trip_exception  s    
.z-TestPandasContainer.test_round_trip_exceptionzfield,dtypeZ
created_atUTCtzZ	closed_atZ
updated_atc                 C   s4   d}|j |d t|jdd}|| j|ks0J d S )Nzw{"created_at": ["2023-06-23T18:21:36Z"], "closed_at": ["2023-06-23T18:21:36"], "updated_at": ["2023-06-23T18:21:36Z"]}
)contentTr)  )Zserve_contentr   urlr:   )rA   fieldr:   Z
httpserverrR   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t| dd|}t|| t tdtddgt	
d	d
gd}|jdksJ tt| dd|}t|| ttdtddg}|d	 jdksJ t|tt| | d S )Nc                 S   s   t j| ddS )NrC  rK  )r<   to_timedelta)rU   r#   r#   r$   <lambda>$  r{   z4TestPandasContainer.test_timedelta.<locals>.<lambda>   r0   secondsztimedelta64[ns]r   r  r   r   r   )r	   r   r:   r   r   r   applyr   r   r<   r   r   r   )rA   	converterrF   r"   framer#   r#   r$   test_timedelta#  s    $z"TestPandasContainer.test_timedeltac                 C   sz   t tddtddgddgtjdddd	}t|jd
d}t|}tj|jd
d|d< t	|j
|d< t|| d S )Nrh  daysr0   ri  r   r   ra   )startr   r   r   rK   r   r'  re  r   rK   )r   r   r<   r   r   r   r   rf  r   to_datetimerK   r   r   )rA   rm  rR   r"   r#   r#   r$   test_timedelta27  s    z#TestPandasContainer.test_timedelta2c                 C   s~   t d}td}td||gitd}tdt|dj|djgi}t|j	dd}t
|ddid}tj||dd	 d S )
Nrh  ra   r   r9   r   r'  r8   Fr   )r   r
   r   r   r<   	Timedeltar   _valuer   r   r   r   r   )rA   tdrD   rm  r    rR   r"   r#   r#   r$   test_mixed_timedelta_datetimeE  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slJ d S )Nr   ro  r   r   r   r-  zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}r4  r5  r3  )r<   r   r6  r	   r7  r   )rA   r.  r+  ry  rR   rF   r    r"   r#   r#   r$   test_timedelta_to_jsonQ  s    
z*TestPandasContainer.test_timedelta_to_jsonc                 C   sR   t  }tdd|gi}tddt|gi}tt|jtd}tj||dd d S )Nr      r   Fr   )r   r   rv   r   r   r   r   r   )rA   r   rm  r    r"   r#   r#   r$   test_default_handlerh  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)ZmathjsComplexreZim)
isinstancecomplexrealimagrv   objr#   r#   r$   defaultr  s    
zBTestPandasContainer.test_default_handler_indirect.<locals>.default	   r   ZSTRrt   r   zN/Ar!  r   r   r   zR[9,[[1,null],["STR",null],[[["mathjs","Complex"],["re",4.0],["im",-5.0]],"N\/A"]]]r'   r   r-   )r?  r=  r   r  r   )rA   r=  r  Zdf_listr    r#   r#   r$   test_default_handler_indirecto  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sLJ d S )Nr   gffffff@rt   r  r   g333333?r   r!  r   r   r   zE[["(1+0j)","(nan+0j)"],["(2.3+0j)","(nan+0j)"],["(4-5j)","(1.2+0j)"]]r'   r  )r   r  r   r   rv   )rA   rI   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 sP0    Y  t jt d0 tdddtd	d
gij|d W d    n1 s0    Y  d S )NZraisinc                    s   t  d S rH   )	TypeErrorr  r!   r#   r$   my_handler_raises  s    zJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raisesr   r   r   r   r   rt   r  )rZ   r[   r  r   r   r   r  )rA   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sFJ |d }|d }| | ksjJ d S )Nr   )r   r   rK   r   r   r   r   r   category)r   r   r}   )rA   rI   r    r  Zscr#   r#   r$   test_categorical  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`J t|}t|}| | ksJ d S )	Nra   r`   
US/Easternr   r`  utcrW  r   r   )r<   r   Z
tz_convertZtz_localizer   rP   r   r	   )rA   tz_rangeZtz_naiverI   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sHJ t	tjdd}tj|jd d< |d}| }|| ksJ d S )Nr   )r   rt      ZSparser   )
r   r@   rX  rY  rZ  r   r   r}   r   r	   )rA   rI   Zsdfr    r  ssr#   r#   r$   test_sparse  s    

zTestPandasContainer.test_sparserD   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Z	iso_dates)r?  r=  to_pydatetime)rA   rD   r=  expdtr#   r#   r$   test_tz_is_utc  s
    	z"TestPandasContainer.test_tz_is_utcc                 C   sL   ddl m} td}d}||dd|ks,J | }||dd|ksHJ d S )Nr   r<  z2013-01-10 05:00:00z"2013-01-10T05:00:00.000"Tr  )r?  r=  r
   r  )rA   r=  rD   r  r  r#   r#   r$   test_tz_is_naive  s    z$TestPandasContainer.test_tz_is_naiver  z2013-01-01 05:00:00Zr   rW  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sDJ ||tdd|ks^J td|i}||dd}||ksJ ||dtiddsJ 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   )rA   r  r=  r  dfexpr   rI   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s6J ||tdd	|ksPJ td
|i}||dd	}||kstJ ||d
tidd	sJ d S )Nr   r<  z2013-01-01 05:00:00r   rW  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   )rA   r=  r   r  r  rI   r"   r#   r#   r$   test_tz_range_is_naive  s    z*TestPandasContainer.test_tz_range_is_naivec                 C   s<   t tddd}tddgddggddgd}t|| d S )	Nr   Tr   r   r   r   r   r   r   r   r   r   r   r   r#   r#   r$   test_read_inline_jsonl  s    z*TestPandasContainer.test_read_inline_jsonlc                 C   sD   t d|j dd|d}tddgddggddgd	}t|| d S )
Nzs3n://z/items.jsonlT)r   storage_optionsr   r   r   r   r   )r   r7   r   r   r   )rA   Zs3_public_bucket_with_datas3sor"   r    r#   r#   r$   test_read_s3_jsonl  s    z&TestPandasContainer.test_read_s3_jsonlc              	   C   s   t d|}t|ddd}|d W d    n1 s:0    Y  t|dd}tdd	gdd	ggd
dgd}t || W d    n1 s0    Y  d S )Nztmp_items.jsonwzutf-8encodingr   Tr   r   r   r   r   r   )r   r$  openwriter   r   r   )rA   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|| 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”r1   r3   r   r   r   )r   r   r   r   r   rA   r   r"   r    r#   r#   r$   test_read_jsonl_unicode_chars3  s    z1TestPandasContainer.test_read_jsonl_unicode_charsbigNumc                 C   sp   t |tdgd}| }dt| d }||ks4J t|tdgdgd}| }dt| d }||kslJ d S )	N	articleIdrO  {"articleId":r4  r   r:   r=   r   {"0":{"articleId":r   )r	   r   r   rv   r   )rA   r  r   r   r    rI   r#   r#   r$   test_to_json_large_numbersD  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 sD0    Y  t dt| d }tjt|d t| W d    n1 s0    Y  d S )Nr  r4  z#Value is too small|Value is too bigr   r  r   )r   rv   rZ   r[   r   r   )rA   r  r   r!   r#   r#   r$   test_read_json_large_numbersQ  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   rM   )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:J t d
dgddggddgd}|jddd}d}||kstJ ttt|dd| t ddgddggddgd}|jddd}d}||ksJ ttt|dd| d S )Nr   r   r   r   r   r&   T)r-   r   z{"a":1,"b":2}
{"a":1,"b":2}
zfoo}r1   zfoo"z/{"a":"foo}","b":"bar"}
{"a":"foo\"","b":"bar"}
r   zfoo\za\r   )r   r   r   r   r   r   r   r#   r#   r$   test_to_jsonlk  s    z!TestPandasContainer.test_to_jsonlz%GH#13774 encoding kwarg not supportedval)   E, 17r{      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  r  c                 C   sv   t dd |D |d}d}td>}|j||d tt||d}tj||dd W d    n1 sh0    Y  d S )	Nc                 S   s$   g | ]}t |tr|d n|qS )latin-1)r  r   decode)rx   rU   r#   r#   r$   rz     r{   z;TestPandasContainer.test_latin_encoding.<locals>.<listcomp>r9   r  r#  r  F)Zcheck_categorical)r	   r   r$  r   r   r   r   )rA   r:   r  rF   r  r   Zretrr#   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sJJ d S )Nr   r   T)r=   deep)r   rv   Zmemory_usagesumr   )rA   rI   Zsize_beforeZ
size_afterr#   r#   r$   "test_data_frame_size_after_to_json  s
    z6TestPandasContainer.test_data_frame_size_after_to_jsonr   r   r   r   1.2.c                 C   sF   t ddgddgg||d}|jdd}tt|dd}t|| d S )Nr   r   r`   rt   rM   tablerN   r   r   r   r   r   r   )rA   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   sH   t ddgddgddgd}|jdd	}tt|dd	}t|| d S )
Nr   r   r   r   r   r   rr  r  rN   r  )rA   r    r  r"   r#   r#   r$   #test_from_json_to_json_table_dtypes  s    z7TestPandasContainer.test_from_json_to_json_table_dtypes)rT   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t||dddd	dddd}t|| d S )Nr   r8   r9   )Nr   r   r  )N rK   r   TFTboolr   r   Nr  )z
2020-01-01Nz
2020-01-03rc   )ZIntegerZFloatZObjectZBoolZCategoryZDatetimerN   r-   r:   )r   	from_dictr	   r   r   r   r   r   )rA   r-   r    r  r"   r#   r#   r$   %test_to_json_from_json_columns_dtypes  s0    z9TestPandasContainer.test_to_json_from_json_columns_dtypes)r   rK   c                 C   sl   t ddgddgddgd}|jdd	}d
}tjt|d t|d|d W d    n1 s^0    Y  d S )Nr   r   r   r   r   r   rr  r  rN   z)cannot pass both dtype and orient='table'r   r  r   r   rZ   r[   r   r   )rA   r:   rI   r  r!   r#   r#   r$   !test_read_json_table_dtype_raises  s
    z5TestPandasContainer.test_read_json_table_dtype_raises)r=   r   r&   r'   c                 C   s<   t  }ttd|dd}t|j|j t|j|j d S )Nz{}Tr   )r   r   r   r   Zassert_index_equalr=   r   )rA   r-   r    r"   r#   r#   r$   %test_read_json_table_empty_axes_dtype  s    z9TestPandasContainer.test_read_json_table_empty_axes_dtypec                 C   sr   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    n1 sd0    Y  d S )Nr   r   r`   rt   r   r   r  r  rM   r  rN   z0cannot pass both convert_axes and orient='table'r   Tr   r  )rA   rI   r  r!   r#   r#   r$   (test_read_json_table_convert_axes_raises  s
    "z<TestPandasContainer.test_read_json_table_convert_axes_raiseszdata, expectedrt   r0   r   )r   rR   r3   r   r   r   r6   )r7   rR   )r7   r=   c                 C   s(   |j ddd}t|}||ks$J d S )NrT   Fr-   r=   )r   r   loadsrA   rR   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sHJ d S )Nr  Fr  r   r&   rN   )ZschemarR   )r   r   r  r<   r   Zbuild_table_schemar   to_dictrA   rR   r"   r    r#   r#   r$   test_index_false_to_json_table  s    
z2TestPandasContainer.test_index_false_to_json_tablec                 C   s`   t ddgddggddgd}d}tjt|d	 |j|d
d W d    n1 sR0    Y  d S )Nr   r   rt   r0   r   r   r   zU'index=False' is only valid when 'orient' is 'split', 'table', 'records', or 'values'r   Fr  rY   r\   r#   r#   r$   test_index_false_error_to_json5  s
    z2TestPandasContainer.test_index_false_error_to_jsonr&   c                 C   s`   t ddgddggddgd}d}tjt|d	 |j|d
d W d    n1 sR0    Y  d S )Nr   r   rt   r0   r   r   r   zS'index=True' is only valid when 'orient' is 'split', 'table', 'index', or 'columns'r   Tr  rY   r\   r#   r#   r$   test_index_true_error_to_jsonC  s
    z1TestPandasContainer.test_index_true_error_to_jsonr  c                 C   sD   t ddgddgd}|j||d}tt||d}t|| d S )Nr   r   r`   rt   r!  r  rN   r  )rA   r-   r=   r    r  r"   r#   r#   r$   "test_index_false_from_json_to_jsonQ  s    z6TestPandasContainer.test_index_false_from_json_to_jsonc                 C   s:   t 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   r=   r  X   z2019-01-01 11:00:00r^  r_  r   )r   r   r	   r   r   r   r   r#   r#   r$   test_read_timezone_information[  s
    
z2TestPandasContainer.test_read_timezone_informationrb  )zs3://example-fsspec/zgcs://another-fsspec/file.jsonzhttps://example-site.com/datazsome-protocol://data.txtc                 C   s2   t td| d}td|gi}t|| d S )Nz{"url":{"0":"r   rb  r  )rA   rb  r"   r    r#   r#   r$   test_read_json_with_url_valuec  s    z1TestPandasContainer.test_read_json_with_url_valuecompression)r  z.gzz.bz2z.tarc                 C   sP   d d| }t jtd| dd t| W d    n1 sB0    Y  d S )NA  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz.jsonzFile z does not existr   )rZ   r[   FileNotFoundErrorr   )rA   r  Zlong_json_pathr#   r#   r$   'test_read_json_with_very_long_file_pathr  s
    z;TestPandasContainer.test_read_json_with_very_long_file_pathzdate_format,key)r,  i \&)r-  Z
P1DT0H0M0Sc                 C   s@   t dggtdgd}d| d}|j|d}||ks<J d S )Nr   Z1Dr   r   z
":{"0":1}}r3  )r   r<   ru  r   )rA   r+  keyrI   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}}r  z,Produces JSON but not in a consistent manner)Zmarksc                 C   s2   t dggdgdgd}|j|d}||ks.J d S )Nr   r!  )rK   rL   rM   rN   r   rA   r-   r    rI   r"   r#   r#   r$   test_tuple_labels  s    z%TestPandasContainer.test_tuple_labelsindent)r   r   rt   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sJ d S )Nr3   r1   r2   r   r   r   r   r   z{
z"a":{
z"0":"foo",
z
"1":"baz"
z},
z"b":{
z"0":"bar",
z
"1":"qux"
z}
}r   )rA   r  rI   r"   spacesr    r#   r#   r$   test_to_json_indent  s:    z'TestPandasContainer.test_to_json_indent))rT   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s6J d S )
Nr3   r1   r2   r   r   r   r   rt   )r-   r  r   r  r#   r#   r$   test_json_indent_all_orients  s    wz0TestPandasContainer.test_json_indent_all_orientsc                 C   s@   t jtdd t jdd W d    n1 s20    Y  d S )Nzmust be a nonnegative integerr   r  )rZ   r[   r   r   r   r   r#   r#   r$    test_json_negative_indent_raises5  s    z4TestPandasContainer.test_json_negative_indent_raisesc                 C   s<   t d}t|}tdd dtjdtj dg}t|| d S )Nz?["a", NaN, "NaN", Infinity, "Infinity", -Infinity, "-Infinity"]r   NaNInfinityz	-Infinity)r   r   r   r@   r   r   r   r  r#   r#   r$   test_emca_262_nan_inf_support9  s    z1TestPandasContainer.test_emca_262_nan_inf_supportc                 C   sB   t ddiddig}tdddgi}tt|}t|| d S )NcolZ31900441201190696999Text)r   r=  r   r   r   r   r   )rA   Zencoded_jsonr    r"   r#   r#   r$   test_frame_int_overflowD  s    z+TestPandasContainer.test_frame_int_overflowzdataframe,expectedrr  rU   rV   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}|jdd}||ks$J d S )NTZfuture_stackr=   rN   )stackr   )rA   Z	dataframer    r   r"   r#   r#   r$   test_json_multiindexK  s    z(TestPandasContainer.test_json_multiindexc                 C   s   |j d }}tg dg dd}|jd| d| |d d}|d	d
 |j D v rZq~td |d8 }|dks@J dq@d S )Nr#  r   )r   rt   r   r  zs3:///)r  r0   c                 s   s   | ]}|j V  qd S rH   )r  )rx   r  r#   r#   r$   	<genexpr>b  r{   z1TestPandasContainer.test_to_s3.<locals>.<genexpr>r   r   z,Timed out waiting for file to appear on moto)r7   r   r   Zobjectsalltimesleep)rA   Zs3_public_bucketr  Zmock_bucket_nameZtarget_filerI   timeoutr#   r#   r$   
test_to_s3Z  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   rZ   r   r   r   r   r   r   )rA   Znulls_fixturer   r   r"   r#   r#   r$   test_json_pandas_nullsh  s
    
z*TestPandasContainer.test_json_pandas_nullsc                 C   s,   t tddd}tg d}t|| d S )Nz[true, true, false]r   r  )TTF)r   r   r	   r   r   r   r#   r#   r$   test_readjson_bool_seriesq  s    z-TestPandasContainer.test_readjson_bool_seriesc                 C   s>   t dtddddgdjdd}| }d}||ks:J d S )	NTz
2017-01-20z
2017-01-23r3   r1   rM   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$   test_to_json_multiindex_escapew  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sFJ d S )
Nc                   @   s"   e Zd ZddddZdd ZdS )zGTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObjectNr   c                 S   s   || _ || _|| _|| _d S rH   r   r   _crL   )rA   r   r   r
  rL   r#   r#   r$   r     s    zPTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.__init__c                 S   s   dS )Nr0   r#   r   r#   r#   r$   r     s    zITestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.e)r   r   r   r   r   r#   r#   r#   r$   _TestObject  s   r  r   r   r`   rt   r	  0)r   r   rL   )r	   r   r  r   )rA   r  r   r#   r#   r$   test_to_json_series_of_objects  s    z2TestPandasContainer.test_to_json_series_of_objectszdata,expectedy             @y              ?y      "@      )r   r   r   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 rH   ri   r  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]]}Zcol1l   :!c&HI l   v8$Z_
 )rR   rT   rN   r   )rA   r    rI   r"   r#   r#   r$   test_json_uint64  s
    z$TestPandasContainer.test_json_uint64)rT   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rt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t|||d}W d    n1 s0    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pyarrowr   r`   Int64r9   r   r^   r_   ZFloat64)r^   r   r_   )TFNr  rr  r  )r   r   rK   rL   r   r  ghpythonr   r   rN   mode.string_storage)dtype_backendr-   TFbooleanr   ArrowExtensionArrayc                    s$   i | ]}| j | d dqS )TZfrom_pandas)array)rx   r  r  r    par#   r$   
<dictcomp>  s   zDTestPandasContainer.test_read_json_dtype_backend.<locals>.<dictcomp>r'   r  )rZ   importorskipr   r	   r@   r   r   r  Zobject_r   r   r   r<   option_contextr   r   pandas.arraysr  r   r>   r+   r   r   )	rA   string_storager  r-   rI   Zstring_arrayZstring_array_naoutr"   r#   r  r$   test_read_json_dtype_backend  sV    

&

z0TestPandasContainer.test_read_json_dtype_backend)rT   r&   r=   c           
      C   s   t d}tdtjdgdd}|j|d}td|$ tt	|||dd	}W d    n1 s`0    Y  tdtjdgdd}|dkrd
dl
m}	 t|	|j|dd}t|| d S )Nr  r   r`   r  r9   rN   r  r   )r  r-   r   r   r  Tr  )rZ   r  r	   r@   r   r   r<   r   r   r   r!  r  r  r   r   )
rA   r"  r  r-   r  rF   r#  r"   r    r  r#   r#   r$   test_read_json_nullable_series  s    
$z2TestPandasContainer.test_read_json_nullable_seriesc                 C   sB   d}t jt|d tddd W d    n1 s40    Y  d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r   r   numpy)r  )rZ   r[   r   r   )rA   r!   r#   r#   r$   test_invalid_dtype_backend  s    z.TestPandasContainer.test_invalid_dtype_backend)r   r   r   rZ   ZfixturerC   rG   rJ   rS   r   ZparametrizerW   r]   r
   rg   rh   rk   r   rp   r@   r8   rr   r  intr~   r   r   r   r   r   AssertionErrorr   r   r   r   r   r   r   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   r8  r@  rF  rH  rI  rJ  rM  rS  rT  r[  r]  networkZ
single_cpur<   ZDatetimeTZDtyperd  rn  rt  rx  ru  r   rz  r|  r  r  r  r  r  r  r  r  r   r  r  r  rw  Zskip_if_not_us_localer  r  r  sysmaxsizer  r  r  r  r  r   r   r  r  r  r  r  r  r  r  r   Zrename_axisr  r  r  r  r  r  r  r  r  paramr  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r%  r'  r#   r#   r#   r$   r/   U   s  




	




	"


`&


	






&

	

	


0& (&( 	 (& 	
u
	!

:r/   c                  C   sR   t td} |  }tjtdd t|dd W d    n1 sD0    Y  d S )Nr   zThe engine type foor   r3   )enginer	   r+   r   rZ   r[   r   r   rF   r#  r#   r#   r$   test_invalid_engine%  s    r1  c                  C   sT   t td} |  }tjtdd t|ddd W d    n1 sF0    Y  d S )Nr   z&currently pyarrow engine only supportsr   r  F)r.  r   r/  r0  r#   r#   r$   test_pyarrow_engine_lines_false-  s    r2  c                 C   s   t d tddgddggddgdd	gd
}| }tdd tt|}W d    n1 sb0    Y  tddgddggdtjddgddtjdd	gddd}t	
|| d S )Nr  r   r   rK   rL   zrow 1zrow 2zcol 1zcol 2rM   zfuture.infer_stringTzstring[pyarrow_numpy]r9   r  )rZ   r  r   r   r<   r   r   r   r   r   r   )r-   rI   r#  r"   r    r#   r#   r$   $test_json_roundtrip_string_inference5  s    
*r3  )'r:  r   decimalr   r   r   r   r   r+  r  r&  r@   rZ   Zpandas.compatr   Zpandas.util._test_decoratorsutilZ_test_decoratorsrw  Zpandasr<   r   r   r   r	   r
   r   Zpandas._testingZ_testingr   Zpandas.core.arraysr   r   r%   r.   r/   r1  r2  r3  r#   r#   r#   r$   <module>   sH    -               _