a
    é´«jd/ ã                   @   s2  d dl Z d dl mZ d dlmZ d dlmZ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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mZmZm Z  d dl!m"Z# d dl$m%Z% d	d
„ Z&dd„ Z'G dd„ dƒZ(dd„ Z)dd„ Z*dd„ Z+dd„ Z,e -d¡dd„ ƒZ.dd„ Z/dS )é    N)Ú	timedelta)ÚDecimal)ÚBytesIOÚStringIO)Úusing_string_dtype)ÚIS64)	ÚNAÚ	DataFrameÚDatetimeIndexÚIndexÚ
RangeIndexÚSeriesÚ	TimestampÚ
date_rangeÚ	read_json)Úujson_dumpsc               	   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 sª0    Y  tjt|d��( tddd
�}t || ¡ W d   ƒ n1 sð0    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 �s¨0    Y  d S )Né   é   ÚaÚb©Úcolumnsz[{"a": 1, "b": 2}
        {"a": 3, "b": 4}
        {"a": 5, "b": 6}
        {"a": 7, "b": 8}z™Passing 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}
Tú4{"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'   ú_/var/www/html/laksyashrimp/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_equalS   s
    r2   c                   @   sJ  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<d€gd�d‚�fd(e<dƒgƒfg¡d„d…„ ƒZ=d†d‡„ Z>dˆd‰„ Z?dŠd‹„ Z@dŒd�„ ZAdŽd�„ ZBd�d‘„ ZCej	 
d’d“d”g¡ej	 
d•d*d(g¡ej	 
d–eDjEeDjDeg¡d—d˜„ ƒƒƒZFej	 
d™g dš¢¡d›dœ„ ƒZGej	 
d�g dž¢¡dŸd „ ƒZHd¡d¢„ ZIej	 
d�g dž¢¡d£d¤„ ƒZJd¥d¦„ ZKej	 
d§g d¨¢¡d©dª„ ƒZLej	 
d§g d«¢¡d¬d­„ ƒZMd®d¯„ ZNd°d±„ ZOd²d³„ ZPej	jQej	jRej	 
d´dµeSjTd¶d·�gd¸d�gd¹eSjTd¶d·�gg¡dºd»„ ƒƒƒZUd¼d½„ ZVd¾d¿„ ZWdÀdÁ„ ZXej	 
d•d*d(g¡ej	 
d’d”d“g¡ej	 
dÂeSjYeZg¡dÃdÄ„ ƒƒƒZ[ej	 
d•d*d(g¡ej	 
dÂeSjYeZg¡dÅdÆ„ ƒƒZ\dÇdÈ„ Z]dÉdÊ„ Z^dËdÌ„ Z_dÍdÎ„ Z`dÏdÐ„ ZadÑdÒ„ ZbdÓdÔ„ Zcej	 
dÕedÖƒed×dØd·�edÙƒg¡dÚdÛ„ ƒZddÜdÝ„ Zeej	 
dÞefdßdàdá�efdâdàdØdã�efdädàdá�g¡dådæ„ ƒZgdçdè„ Zhdédê„ Ziej	jRejjkdëdì„ ƒƒZldídî„ Zmdïdð„ Znej	 
dñeojpd eojpdà  g¡dòdó„ ƒZqej	 
dñdôdõg¡död÷„ ƒZrdødù„ Zsdúdû„ Ztej	jdüeud<�ej	 
dýg dþ¢g dÿ¢g �d ¢g �d¢g �d¢g �d¢g �d¢ejv�d�d�dg�dejv�d�d�dgg	¡ej	 
d'�d	ewg¡�d
�d„ ƒƒƒZx�d�d„ Zyej	 
dd/ddàg�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„ ƒƒZz�d�d„ Z{ej	je|ƒ �ddT�e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dàg�d%�d&ggddg�d'�ddgddàg�d%�d&gg�d(œfe�ddàg�d%�d&ggddg�d'� ‚�d)¡ddgddàg�d%�d&gg�d(œfe�ddàg�d%�d&ggddgddgddgg�d*�ddgddàg�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dàg�d,ddgddgg�d/��d,ddàg�d.œfg¡�d0�d1„ ƒZƒej	 
de�ddàg�d%�d&ggddg�d'�e�ddàg�d%�d&ggddg�d'� ‚�d)¡e�ddàg�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dàg�d,ddgddgg�d/�g¡�d2�d3„ ƒZ„ej	 
d	ddg¡�d4�d5„ ƒZ…ej	 
d	�d6dg¡�d7�d8„ ƒZ†ej	 
d	d�d9g¡ej	 
dd*d(g¡�d:�d;„ ƒƒZ‡�d<�d=„ Zˆej	 
�d>g �d?¢¡�d@�dA„ ƒZ‰ej	 
�dBg �dC¢¡�dD�dE„ ƒZŠej	 
�dF�dG�dHg¡�dI�dJ„ ƒZ‹ej	 
�dK�dL�dMejŒd�dNej	j�dOdT��dP�ejŒ�d9�dNej	j�dOdT��dP�g¡�dQ�dR„ ƒZ�ej	 
�dSg �dT¢¡�dU�dV„ ƒZŽej	j&e|ƒ �dWdT�ej	 
�dKg �dX¢¡�dY�dZ„ ƒƒZ��d[�d\„ Z��d]�d^„ Z‘�d_�d`„ Z’ej	 
�dae�g �d+¢g �db¢�dcœƒ�ddfg¡�de�df„ ƒZ“ej	jR�dg�dh„ ƒZ”�di�dj„ Z•�dk�dl„ Z–�dm�dn„ Z—�do�dp„ Z˜ej	 
�dqe<�dr�ds�dt�duœƒ�dvfe<�dw�dx�dy�duœƒ�dzfe��d{�d|g�d}�d~ggƒ�dfe��d€�d�g�d‚�dƒggƒ�d„fg¡�d…�d†„ ƒZ™�d‡�dˆ„ Zšej	je|ƒ �d‰d(�dŠ��d‹�dŒ„ ƒZ›ej	 
d	g �d�¢¡�dŽ�d�„ ƒZœ�d��d‘„ Z�d/S (’  ÚTestPandasContainerc                 C   sv   dd„ t tdƒƒD ƒ}dgd dgd  dgd  dgd	  }tt|ƒƒ|d
< tjddd�|d< t|tj|d
d�d�S )Nc                 S   s$   i | ]\}}|t j |¡ d ¡“qS )é   )ÚnpÚrandomÚdefault_rngÚstandard_normal)Ú.0ÚiÚcr'   r'   r(   Ú
<dictcomp>^   s   ÿz9TestPandasContainer.categorical_frame.<locals>.<dictcomp>ÚABCDZbahé   ÚbarÚbazÚfooé   ÚEr4   Úint64©ÚdtypeÚsort©Úname©Úindex)Ú	enumerateÚlistÚreversedr5   Úaranger	   ÚpdZCategoricalIndex)ÚselfÚdataÚcatr'   r'   r(   Úcategorical_frame\   s    
þ(z%TestPandasContainer.categorical_framec                 C   s8   t dtjdtjd� tddd�dd�}|j d ¡|_|S )Ngš™™™™™ñ?é
   rE   ú
2020-01-01©ÚperiodsÚts)rK   rI   )r   r5   rO   Úfloat64r   rK   Ú
_with_freq)rQ   Úserr'   r'   r(   Údatetime_seriesg   s    
ýz#TestPandasContainer.datetime_seriesc                 C   s@   t tj d¡ d¡ttdƒƒtdddd�d�}|j 	d ¡|_|S )	Nr   )r4   é   r=   ú
2000-01-01r4   ÚB©rX   Úfreq©r   rK   )
r	   r5   r6   r7   r8   r   rM   r   rK   r[   )rQ   Údfr'   r'   r(   Údatetime_frames   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   r;   Údz	index " 1z	index / 2za \ bzy / z©rK   r   ©r1   ©r	   r   r"   r   Úcopyr2   ©rQ   r1   rd   rR   r&   r$   r'   r'   r(   Ú test_frame_double_encoded_labels   s    ýz4TestPandasContainer.test_frame_double_encoded_labelsr1   )Ú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   r;   rf   r   ÚxÚyrg   rh   ri   rk   r'   r'   r(   Útest_frame_non_unique_index‹   s
    "z/TestPandasContainer.test_frame_non_unique_indexrK   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   r;   rf   r   rn   ro   rg   z+DataFrame index must be unique for orient='ú'r   rh   ©r	   ÚpytestÚraisesr!   r"   ©rQ   r1   rd   r%   r'   r'   r(   Ú"test_frame_non_unique_index_raises”   s    "z6TestPandasContainer.test_frame_non_unique_index_raisesrm   r+   rR   r   r   r;   rf   ç      ø?ç      @g      @g      @r   é   Ú20130101Z20130102c                 C   s¨   t |ddgddgd�}tt|j|d�ƒ|dgd�}|dkr‚t |ƒ}|jd d …df jd	kr˜| d|jd d …df  tj	¡d
 ¡ n|dkr˜|}ddg|_
t ||¡ d S )Nr   r   rn   rg   rh   )r1   Úconvert_datesr+   r   údatetime64[ns]é@B rm   zx.1)r	   r   r   r"   ÚilocrF   ZisetitemÚastyper5   rD   r   r   r#   )rQ   r1   rR   rd   r&   r$   r'   r'   r(   Útest_frame_non_unique_columns›   s    ÿ(
z1TestPandasContainer.test_frame_non_unique_columns)rK   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   r;   rf   r   r   rn   rg   z-DataFrame columns must be unique for orient='rq   r   rh   rr   ru   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   rh   ©r"   )rQ   Úfloat_framer'   r'   r(   Útest_frame_default_orientÁ   s    z-TestPandasContainer.test_frame_default_orientrF   FÚconvert_axesTc                 C   s4   t |j|d�ƒ}t||||d�}|}t|||ƒ d S ©Nrh   ©r1   r…   rF   ©r   r"   r   r2   )rQ   r1   r…   rF   rƒ   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 r†   rˆ   )rQ   r1   r…   rF   Ú	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)éÈ   r^   c                 S   s   g | ]}t |ƒ‘qS r'   ©Ústr©r9   r:   r'   r'   r(   Ú
<listcomp>Û   ó    z?TestPandasContainer.test_roundtrip_str_axes.<locals>.<listcomp>r^   c                 S   s   g | ]}t |ƒ‘qS r'   r�   r�   r'   r'   r(   r�   Ü   r‘   rŒ   )r   rK   rF   rh   r‡   rg   r*   rm   )r	   r5   Zzerosr/   r   r"   r   rj   r   rD   r   rK   r2   )rQ   r1   r…   rF   rd   rR   r&   r$   r'   r'   r(   Útest_roundtrip_str_axesÖ   s&    üz+TestPandasContainer.test_roundtrip_str_axesc           	      C   sx   |dv r$|  tjjd|› d�d�¡ t|j|d�ƒ}t|||d�}| ¡ }|j 	|sXt
nd¡|_d |j_t|||ƒ d S )Nrg   z.Can't have duplicate index values for orient 'z')©Úreasonrh   ©r1   r…   rŽ   )Úapplymarkerrs   ÚmarkÚxfailr   r"   r   rj   rK   r   rŽ   rI   r2   )	rQ   Úrequestr1   rT   r…   Úusing_infer_stringrR   r&   r$   r'   r'   r(   Útest_roundtrip_categoricalö   s    
ÿÿ
ÿz.TestPandasContainer.test_roundtrip_categoricalc                 C   sv   t ƒ }t|j|d�ƒ}t|||d�}|dkrNtg |r8tntd�}t ||d�}n|dv r^t ƒ }n| ¡ }t 	||¡ d S )Nrh   r•   rm   rE   rg   )
r	   r   r"   r   r   ÚfloatÚobjectrj   r   r#   )rQ   r1   r…   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 )Nrh   r•   r}   rm   )r   r"   r   rj   rK   Úviewr5   rD   r   rŽ   r2   )rQ   r1   r…   re   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   r;   rf   Úe)ç        ç      ð?ç       @ç      @ç      @)r£   r¤   r£   r¤   r£   )Zfoo1Zfoo2Zfoo3Zfoo4Zfoo5)TFTFT©ÚAr`   ÚCÚD)rR   rK   rh   r•   Únumber)r   r	   r   r"   r   rj   ZassignZselect_dtypesr   r5   rD   r2   )	rQ   r1   r…   rK   r+   rd   rR   r&   r$   r'   r'   r(   Útest_roundtrip_mixed,  s    üz(TestPandasContainer.test_roundtrip_mixedz9#50456 Column multiindex is stored and loaded differently)r”   rt   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   ry   r^   r   rm   rh   )	r	   rP   Z
MultiIndexZfrom_arraysr   r"   r   r   r#   )rQ   r   rd   rR   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 columnsrm   )zN{"badkey":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}zunexpected key\(s\): badkeyrm   c                 C   sB   t jt|d��  tt|ƒ|d� W d   ƒ n1 s40    Y  d S )Nr   rh   )rs   rt   r!   r   r   )rQ   rR   r%   r1   r'   r'   r(   Ú$test_frame_from_json_bad_data_raisesU  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 ¡sˆJ ‚d S )
Nr   r   ©r^   r>   é   rh   r‡   ©r   r   Ú1Ú2)Ú4Ú5Ú6)r	   r   r   r"   r5   Úisnanr~   )rQ   r1   r…   rF   Znum_dfr&   Zobj_dfr'   r'   r(   Ú!test_frame_from_json_missing_data{  s     üüz5TestPandasContainer.test_frame_from_json_missing_datac                 C   s,   t tdƒ|d�}ttjgƒ}t ||¡ d S )Nz[null]rE   )r   r   r	   r5   Únanr   r#   )rQ   rF   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³   rE   )r	   Úlocr   r"   r   r5   r¹   r~   )rQ   r½   rF   rd   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¥   )g333333ÿ¿r   g       À)g×£p=
×ï?r   r¤   )g–C‹lçûï?ry   r¤   )gûÿÿÿÿÿï?rB   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"   )rQ   ÚvalueÚ	precisionZexpected_valrd   Ú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   ry   z+Invalid value 'garbage' for option 'orient'r   Úgarbagerh   rr   )rQ   rd   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   rE   F©Úcheck_index_type)	r	   Ú_is_mixed_typer   r"   r   ÚdictÚdtypesr   r#   )rQ   rd   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ÚtestrJ   r   rh   z{"test":{}}rÁ   ©rQ   rd   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   Úi8rE   FrÌ   )
r	   r   rÎ   r"   r   r#   r   r   rÏ   rÐ   )rQ   rd   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)rU   r   rA   çš™™™™™¹?g{®Gáz„?)é   r   r?   gš™™™™™É?g{®Gáz”?)r4   ry   r@   g333333Ó?g¸…ëQ¸ž?)é(   r^   Úquxgš™™™™™Ù?g{®Gáz¤?Úabcd)Z1stZ2ndZ3rdZ4thZ5thrg   ©rm   rK   r   rh   Fr•   r*   r   r+   )r	   rM   rÎ   rj   r   r"   r   r   r#   r   r0   rK   Úshaper   )rQ   Úvalsrd   Úrightr1   Ú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j||	dd� d S )Nz
2000-01-03z
2000-01-07©rb   )gÛÃ‰àù?gzÙ~Kcå?gäXî7 öü?g˜H/‹Æ¿)g±|§RÐ¿gµº¤ƒXª´¿gsõB…f ¿gÇÏëô(�Æ¿)g±à<¤1=ø?gÎâÅÂ9¾?gàÛôg?ú?gL¤—Å‚
õ¿)g¡¦¯J–Qœ¿g½[r?T˜Ü?gj<èDH>Õ?g-þ¾ØÑ¿)gI°ÄEæx®?gW!i`y’ÀgP0Æ4‘�ô?gè+«]Ñ5Ö?r¨   rc   z19920106 18:21:32.12ÚnsÚdaterz   ry   Úmodifiedr   ÚioÚjsonrR   ztsframe_v012.json)Zaxisztsframe_iso_v012.jsonF©Úcheck_column_type)r   r
   r5   Zasarrayr	   r   Úas_unitr~   r   Úget_locrP   ÚNaTÚosÚpathÚjoinr   r   r#   r-   )
rQ   ÚdatapathÚdtird   Ú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 dddd�}tt|ƒd d�}tg d¢g d¢g d¢g d	¢g d
¢g d¢dœ|d�}|j |s`tjnd¡|_t|j	dd�ƒ}t
|dd�}tj||ddddd� d S )NZ20000101rU   Úhra   rã   )
g}S? wí¿gÂôbÍmÇè?gz(~J�	ô?gðô1¼å¬ã?gk*¬ÐMã¿gv�TçjŽÏ?g7j	" YÒ?gp¢+KS(Àgñ’¬�µ£î?gZtÛS¬yð¿)
i¢L,i_�}i4zõiKeáiL&»iÞ%giûÜDiY)L i;ei­Dô )
Z78c608f1Z64a99743Z13d2ff52Zca7f4af2Z97236474Zbde7e214Z1a6bde47Zb1190be5Z7a669144Z8d64d068)
gD!¸€†í¥¿gIxJ ˆðü¿gÛòµ%â
@g�¨PÝ\<è¿gòÐ�÷ÛÞ¿gPl‰…ï—ë?gFàzÚnñ?g5mH/î?gp®Hé%Ÿ¿gáIðö?)
Z14f04af9Zd085da90Z4bcfac83Z81504cafZ2ffef4a9Z08e2f5c4Z07e1af03Zaddbd4a7Z1f6a09baZ4bfc4d87)
i¥/iŽÞØiÑYiÛ6i‚IÀ i;ª>i¶Á	iÒ(¡ i0q{iÑª‰)Zfloat_1Zint_1Zstr_1Zfloat_2Zstr_2Zint_2rJ   rŽ   rm   rh   T)rÍ   rê   Z	by_blocksZcheck_exact)r   r
   rM   r	   r   r   r5   Zstr_r   r"   r   r   r#   )rQ   rš   rK   Údf_mixedrR   Zdf_roundtripr'   r'   r(   Útest_blocks_compat_GH9037  s2    Ã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 s€0    Y  t |gd	gd
œddgd�}tjt|d�� | ¡  W d   ƒ n1 sÐ0    Y  |jtd�}d|› d�}	||	ksþJ ‚|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 ©N)ÚhexedÚbytesÚfromhexÚbinary)rQ   rû   r'   r'   r(   Ú__init__z  s    zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__c                 S   s   | j S rú   )rû   ©rQ   r'   r'   r(   Ú__str__~  s    zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__)Ú__name__Ú
__module__Ú__qualname__rÿ   rŽ   r  r'   r'   r'   r(   ÚBinaryThingy  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"   rs   rt   ÚOverflowErrorrŽ   )
rQ   r  rû   ZbinthingZdf_printableZdf_nonprintabler%   rö   r&   r$   r'   r'   r(   Útest_frame_nonprintable_bytesv  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 )Nr?   i † r   rA   i9  ú{"z":{"0":1},"foo":{"0":1337}}rÁ   ©rQ   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   rJ   z.Series index must be unique for orient='index'r   rK   rh   rm   Úseries)r1   Útypr*   )r   rs   rt   r!   r"   r   Úassert_series_equalr   r   Zassert_equalr+   )rQ   Ú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 )NrK   rh   r‚   )rQ   Ústring_seriesr'   r'   r(   Útest_series_default_orient´  s    z.TestPandasContainer.test_series_default_orientc                 C   sn   t |j|d�ƒ}t|d|d�}|}|r<|dv r<|j d¡|_|dv rP|jdd�}|d	kr^d |_t ||¡ d S )
Nrh   r  ©r  r1   rÜ   rŽ   ©r+   r*   Tr,   rm   )	r   r"   r   rK   r   r.   rI   r   r  )rQ   r1   r  rš   rR   r&   r$   r'   r'   r(   Útest_series_roundtrip_simple·  s    z0TestPandasContainer.test_series_roundtrip_simplec                 C   sf   t |j|d�ƒ}t|d||d�}|}|dv r8|jdd�}|dkrFd |_tƒ rV| d¡}t ||¡ d S )	Nrh   r  )r  r1   rF   r  Tr,   rm   rŽ   )	r   r"   r   r.   rI   r   r   r   r  )rQ   r1   rF   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©rK   rF   rh   r  r  Tr,   rm   )r   r5   rZ   r   r"   r   r.   rK   r   r   r  )rQ   r1   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 )Nrh   r  r  r  Tr,   rm   )r   r"   r   r.   rI   r   r  )rQ   r1   r]   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   r;   rf   r¢   ÚfrJ   rh   r  r  r  Tr,   )	r   r/   r   r"   r   rj   r.   r   r  )rQ   r1   rF   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   rs   rt   r!   r"   )rQ   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  ©rQ   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  rF   r^   ry   )r   r   r   r"   r5   rD   r   r  )rQ   r  r&   r$   r'   r'   r(   Útest_series_with_dtype  s    z*TestPandasContainer.test_series_with_dtypezdtype,expectedr_   r|   rE   l    ,ŸUqc                 C   s8   t dgdd�}t| ¡ ƒ}t|d|d�}t ||¡ d S )Nr_   r|   rE   r  r&  )r   r   r"   r   r   r  )rQ   rF   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#   ©rQ   rd   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  rD   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ª   rJ   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   )rQ   rƒ   rŠ   re   rï   rd   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  rI   )rQ   r]   re   rè   r&   r'   r'   r(   Útest_axis_dates1  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 )Nrz   rä   rå   r¤   rA   ©Ú	date_unitF©r{   rÕ   rD   rJ   r  r,  )r   rë   r   r"   r   r   r#   rj   r+   r    r   r   rK   r  )rQ   r]   re   rd   rè   r&   r$   rY   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   rJ   ©r8  r9  z+{"1577836800000":1577836800000,"null":null}zA{"2020-01-01T00:00:00.000":"2020-01-01T00:00:00.000","null":null}Ú}ú	,"a":"a"})rP   rí   Úappendr   r"   Úreplace)rQ   r8  r;  r<  rR   r\   r&   r$   r'   r'   r(   Útest_date_index_and_valuesU  s    
ÿz.TestPandasContainer.test_date_index_and_valuesÚ
infer_word)Z
trade_timerå   ÚdatetimeZsold_atræ   Ú	timestampZ
timestampsc                 C   s^   dd|diddig}t dtdƒgdtjggd|gd�}ttt|ƒƒƒd|g }t ||¡ d S )NÚidr   l    $äAÅr   z
2002-11-08r   )	r	   r   rP   rí   r   r   r   r   r#   )rQ   rF  rR   r$   r&   r'   r'   r(   Útest_convert_dates_inferl  s    ÿz,TestPandasContainer.test_convert_dates_inferzdate,date_unit))ú20130101 20:43:42.123N)ú20130101 20:43:42r  )rK  Ú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   r>   r:  ©r8  r5  r@  )r   rë   rP   rí   r~   r   rì   r"   r   r   rj   r   r#   )rQ   rå   r5  re   rd   rè   r&   r$   r'   r'   r(   Útest_date_format_frameƒ  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:  rA   rO  )rs   rt   r!   r"   )rQ   re   rd   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ä   rJ   r   r>   r:  rO  r@  r  r,  )r   r   rë   rK   rP   rí   r~   r"   r   r   rj   r   r  )rQ   rå   r5  r]   rY   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 )NrK  rJ   rQ  r   r:  rA   rO  )r   r   rK   rs   rt   r!   r"   )rQ   r]   rY   r%   r'   r'   r(   Útest_date_format_series_raises¹  s    z2TestPandasContainer.test_date_format_series_raisesÚunit)r  rM  rN  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 )NrL  rä   rå   z19710101 20:43:42r   z21460101 20:43:42r   r^   r9  rO  r4  )r   rë   r   rì   r~   rP   rí   r"   r   r   r   r#   )rQ   rU  re   rd   Údlrè   r&   r'   r'   r(   Útest_date_unit¿  s    z"TestPandasContainer.test_date_unit)r  rM  rN  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[ú]rE   z2022-01-01T11:22:33.123456©rF   rK   )rå   Údate_objr:  rO  r   rå   rZ  r6  F)rÍ   Zcheck_dtype)r
   r5   Z
datetime64r	   r   r�   r   r"   Úseekr   r#   r   )rQ   rU  rK   rd   Ú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   )rQ   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ddd�|_	t
| ¡ ƒ}t|tjtjdœd�}t ||¡ d S )Nr   )r>   r   ZABr   rz   rå   r>   ÚintsTÚboolsrW   )r_  r`  rE   )r	   r5   r6   r7   r8   rM   r   r/   r   rK   r   r"   r   rD   Zbool_r   r#   )rQ   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.csvrg   z.The 'downcast' keyword in fillna is deprecatedr   F)Zdowncast)rP   Zread_csvr"   r   r   ZreindexrK   r   r   r   r    Zfillnar5   r»   r#   )rQ   rñ   rï   rd   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"]}
)ÚcontentTr6  )Zserve_contentr   ÚurlrF   )rQ   ÚfieldrF   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s‚J ‚tt| ¡ ƒdd� |¡}t ||¡ t
tdƒtdd�gƒ}|d	 jdksÐJ ‚t |tt| ¡ ƒƒ |¡¡ d S )Nc                 S   s   t j| dd�S )NrM  ©rU  )rP   Úto_timedelta)rn   r'   r'   r(   Ú<lambda>9  r‘   z4TestPandasContainer.test_timedelta.<locals>.<lambda>é   r>   ©Úsecondsztimedelta64[ns]r  r,  r   r   rJ   )r   r   rF   r   r   r"   Úapplyr   r  r   r	   r#   )rQ   Ú	converterr\   r&   Úframer'   r'   r(   Útest_timedelta8  s    "ÿz"TestPandasContainer.test_timedeltac                 C   sx   t tdd�tdd�gddgtddd�d	œƒ}t|jd
d�ƒ}t|ƒ}tj|jd
d�|d< t 	|j
¡|d< t ||¡ d S )Nrm  ©Údaysr>   rn  r   r   rz   )ÚstartrX   ©r   r   r;   rä   r4  rj  r   r;   )r	   r   r   r   r"   r   rP   rk  r   Úto_datetimer;   r   r#   )rQ   rr  rR   r&   r'   r'   r(   Útest_timedelta2L  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 )
Nrm  rz   r   rE   rä   r4  rD   FrÌ   )r   r   r	   r�   rP   Ú	Timedeltarë   Ú_valuer   r"   r   r   r#   )rQ   ÚtdrY   rr  r$   rR   r&   r'   r'   r(   Útest_mixed_timedelta_datetimeZ  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   rt  r   r   rJ   r:  zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}rA  rB  r@  )rP   rí   rC  r   rD  r"   )rQ   r;  r8  r~  rR   r\   r$   r&   r'   r'   r(   Útest_timedelta_to_jsonf  s    
ÿz*TestPandasContainer.test_timedelta_to_jsonc                 C   sB   |dd�g}t ||d�}|r&| t¡}| ¡ }d}||ks>J ‚d S )Né*   )ZmillisecondsrJ   z	{"42":42})r   r   r�   r"   )rQ   r;  r~  rR   r\   r&   r$   r'   r'   r(   Ú+test_timedelta_to_json_fractional_precision}  s    
z?TestPandasContainer.test_timedelta_to_json_fractional_precisionc                 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	   rŽ   r   r   r"   r   r#   )rQ   rÂ   rr  r$   r&   r'   r'   r(   Útest_default_handler‰  s
    z(TestPandasContainer.test_default_handlerc                 C   sV   dd„ }dt ddtddƒgtdƒd d	gd
œddgd�g}d}t||dd�|ksRJ ‚d S )Nc                 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ÚimagrŽ   ©Úobjr'   r'   r(   Údefault‘  s    
zBTestPandasContainer.test_default_handler_indirect.<locals>.defaulté	   r   ZSTRr^   éûÿÿÿ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	  r1   )r	   r‡  rœ   r   )rQ   rŒ  Zdf_listr$   r'   r'   r(   Útest_default_handler_indirect�  s    þþÿÿz1TestPandasContainer.test_default_handler_indirectc                 C   sP   t ddtddƒgtdƒd tddƒgdœd	d
gd�}d}|jtdd�|ksLJ ‚d S )Nr   gffffff@r^   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"   rŽ   )rQ   rd   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 sž0    Y  d S )NZraisinc                    s   t ˆ ƒ‚d S rú   )Ú	TypeErrorrŠ  ©r%   r'   r(   Úmy_handler_raisesµ  s    zJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raisesr   r   r   r   r  r^   rŽ  )rs   rt   r’  r	   r�   r"   r‡  )rQ   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   r;   r   r   r   r   r`   Úcategory)r	   r"   r   )rQ   rd   r$   r  Úscr'   r'   r(   Útest_categoricalÁ  s    z$TestPandasContainer.test_categoricalc                 C   s„   t dddd�}| d¡ d ¡}t|t ddd�dœƒ}| ¡ }||d< | ¡ }|| ¡ ks\J ‚t|ƒ}t|ƒ}| ¡ | ¡ ks€J ‚d S )	Nrz   ry   ú
US/Eastern©rX   re  ÚutcrW   r  r©   )r   Z
tz_convertZtz_localizer	   rj   r"   r   )rQ   Útz_rangeZtz_naiverd   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s�J ‚d S )Nr   )rU   r^   é   ZSparserU   )
r	   r5   r6   r7   r8   r»   r¾   r   r"   r   )rQ   rd   Zsdfr$   r  Ússr'   r'   r(   Útest_sparseÞ  s    

zTestPandasContainer.test_sparserY   z2013-01-10 05:00:00Zz2013-01-10 00:00:00r™  z2013-01-10 00:00:00-0500c                 C   s8   d}t |dd�|ksJ ‚| ¡ }t |dd�|ks4J ‚d S )Nz"2013-01-10T05:00:00.000Z"T©Z	iso_dates)r   Úto_pydatetime©rQ   rY   ÚexpÚdtr'   r'   r(   Útest_tz_is_utcî  s    	z"TestPandasContainer.test_tz_is_utcc                 C   s@   t dƒ}d}t|dd�|ks J ‚| ¡ }t|dd�|ks<J ‚d S )Nz2013-01-10 05:00:00z"2013-01-10T05:00:00.000"Tr¡  )r   r   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}t |dd�|ksJ ‚t|ƒ}t |dd�|ks8J ‚t | t¡dd�|ksRJ ‚td|iƒ}t |dd�}||ksvJ ‚t | dti¡dd�s�J ‚d S )Nz7["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	   )rQ   rœ  r¤  Údfexprò   rd   r&   r'   r'   r(   Útest_tz_range_is_utc  s    	ÿz(TestPandasContainer.test_tz_range_is_utcc                 C   s„   t ddd�}d}d}t|dd�|ks(J ‚t| t¡dd�|ksBJ ‚td|iƒ}t|dd�}||ksfJ ‚t| dti¡dd�s€J ‚d S )	Nz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	   )rQ   rò   r¤  r©  rd   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   rI   r	   r   r#   )rQ   Zs3_public_bucket_with_dataÚs3sor&   r$   r'   r'   r(   Útest_read_s3_jsonl6  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 sŒ0    Y  d S )Nztmp_items.jsonÚwzutf-8©Úencodingr   Tr   r   r   r   r   r   )r   r1  ÚopenÚwriter   r	   r#   )rQ   rï   Úinfiler&   r$   r'   r'   r(   Útest_read_local_jsonlC  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â€�r?   rA   r   r   r   )r   r   r	   r   r#   ©rQ   rè   r&   r$   r'   r'   r(   Útest_read_jsonl_unicode_charsL  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Ú	articleIdrY  ú{"articleId":rA  r   ©rF   rK   r   ú{"0":{"articleId":rÀ   )r   r�   r"   rŽ   r	   )rQ   rº  r  rè   r$   rd   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 sD0    Y  t dt|ƒ d ƒ}tjt|d�� t|ƒ W d   ƒ n1 sŽ0    Y  d S )Nr¼  rA  z#Value is too small|Value is too bigr   r¾  rÀ   )r   rŽ   rs   rt   r!   r   )rQ   rº  rè   r%   r'   r'   r(   Útest_read_json_large_numbersj  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»  rJ   z.{"0": {"articleId": "1404366058080022500245"}}r   rg   )r   r   r   r   r  r	   r#   r¸  r'   r'   r(   Útest_read_json_large_numbers2v  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sÆJ ‚t tt|ƒdd�|¡ d S )Nr   r   r   r   r   r*   T©r1   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\r   )r	   r"   r   r#   r   r   rÓ   r'   r'   r(   Útest_to_jsonl„  s    z!TestPandasContainer.test_to_jsonlz%GH#13774 encoding kwarg not supportedÚ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È  )ó   Aøür‘   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)r9   rn   r'   r'   r(   r�   ­  r‘   z;TestPandasContainer.test_latin_encoding.<locals>.<listcomp>rE   rË  r0  r²  F)Zcheck_categorical)r   r   r1  r"   r   r   r  )rQ   rF   rÄ  r\   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)rK   Údeep)r	   rŽ   Zmemory_usageÚsumr"   )rQ   rd   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   ry   r^   rg   Útablerh   ©r	   r"   r   r   r   r#   )rQ   rK   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¸   rw  rÓ  rh   rÔ  )rQ   r$   rÕ  r&   r'   r'   r(   Ú#test_from_json_to_json_table_dtypesÌ  s    z7TestPandasContainer.test_from_json_to_json_table_dtypeszincorrect na conversion)rm   r*   rK   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Ç   rD   rE   )Nr¥   r¦   rZ   )NÚ r;   r�   ©TFTÚbool©r   r   Nr–  )rV   Nz
2020-01-03r|   )ÚIntegerÚFloatZObjectZBoolZCategoryZDatetimerh   ©r1   rF   )r	   Ú	from_dictr   r"   r   r   r   r#   )rQ   r1   r$   rÕ  r&   r'   r'   r(   Ú%test_to_json_from_json_columns_dtypesÕ  s0    ÿúÿúýz9TestPandasContainer.test_to_json_from_json_columns_dtypes)r   r;   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¸   rw  rÓ  rh   z)cannot pass both dtype and orient='table'r   rÞ  ©r	   r"   rs   rt   r!   r   )rQ   rF   rd   rÕ  r%   r'   r'   r(   Ú!test_read_json_table_dtype_raisesõ  s
    z5TestPandasContainer.test_read_json_table_dtype_raises)rK   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   Úassert_index_equalrK   r   )rQ   r1   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   ry   r^   r¤   r¥   rÑ  rÒ  rg   rÓ  rh   z0cannot pass both convert_axes and orient='table'r   Tr•   rá  )rQ   rd   rÕ  r%   r'   r'   r(   Ú(test_read_json_table_convert_axes_raises  s
    "z<TestPandasContainer.test_read_json_table_convert_axes_raiseszdata, expectedr^   r>   r   )r   rR   rA   rc   rÇ   r©   rH   )rI   rR   )rI   rK   c                 C   s(   |j ddd�}t |¡}||ks$J ‚d S )Nrm   F©r1   rK   )r"   rè   Úloads©rQ   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æ  rJ   r*   rh   )ZschemarR   )r"   rè   rç  rP   rç   Zbuild_table_schemar	   Úto_dict©rQ   rR   r&   r$   r'   r'   r(   Útest_index_false_to_json_table4  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   r^   r>   r   r   r   zU'index=False' is only valid when 'orient' is 'split', 'table', 'records', or 'values'r   Fræ  rr   ru   r'   r'   r(   Útest_index_false_error_to_jsonQ  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   r^   r>   r   r   r   zS'index=True' is only valid when 'orient' is 'split', 'table', 'index', or 'columns'r   Træ  rr   ru   r'   r'   r(   Útest_index_true_error_to_json_  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   ry   r^   r.  ræ  rh   rÔ  )rQ   r1   rK   r$   rÕ  r&   r'   r'   r(   Ú"test_index_false_from_json_to_jsonm  s    z6TestPandasContainer.test_index_false_from_json_to_jsonc                 C   s>   t tdƒddd�}tdgdd�}tdg|d	�}t ||¡ d S )
Nz{"2019-01-01T11:00:00.000Z":88}r  rK   r  z2019-01-01 11:00:00zM8[ns, UTC]rE   éX   rJ   )r   r   r
   r   r   r  )rQ   r&   Zexp_dtir$   r'   r'   r(   Útest_read_timezone_informationw  s    
ÿz2TestPandasContainer.test_read_timezone_informationrg  )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  rg  r¬  )rQ   rg  r&   r$   r'   r'   r(   Útest_read_json_with_url_value€  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   )rs   rt   ÚFileNotFoundErrorr   )rQ   ró  Z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)r9  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}}r@  )r	   rP   rz  r"   )rQ   r8  Úkeyrd   r$   r&   r'   r'   r(   Útest_timedelta_as_label�  s    z+TestPandasContainer.test_timedelta_as_labelzorient,expected)rK   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.  )r;   rf   rg   rh   rÁ   ©rQ   r1   r$   rd   r&   r'   r'   r(   Útest_tuple_labels§  s    z%TestPandasContainer.test_tuple_labelsÚindent)r   r   r^   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s‚J ‚d S )NrA   r?   r@   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Á   )rQ   rú  rd   r&   Úspacesr$   r'   r'   r(   Útest_to_json_indentÃ  s:    ÿþþýýüûúúùùøz'TestPandasContainer.test_to_json_indentz]Adjust expected when infer_string is default, no bug here, just a complicated parametrization))rm   zã{
    "columns":[
        "a",
        "b"
    ],
    "index":[
        0,
        1
    ],
    "data":[
        [
            "foo",
            "bar"
        ],
        [
            "baz",
            "qux"
        ]
    ]
})r*   zf[
    {
        "a":"foo",
        "b":"bar"
    },
    {
        "a":"baz",
        "b":"qux"
    }
])rK   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 )
NrA   r?   r@   rÚ   r   r   r   r^   )r1   rú  rÁ   rø  r'   r'   r(   Útest_json_indent_all_orients×  s    |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û  )rs   rt   r!   r	   r"   r   r'   r'   r(   Ú test_json_negative_indent_raisesW  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	   r5   r½   r   r#   rë  r'   r'   r(   Útest_emca_262_nan_inf_support[  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è   Údumpsr	   r   r   r   r#   )rQ   Zencoded_jsonr$   r&   r'   r'   r(   Útest_frame_int_overflowf  s    z+TestPandasContainer.test_frame_int_overflowzdataframe,expectedrw  ©rn   ro   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_stackrK   rh   )Ústackr"   )rQ   Z	dataframer$   r  r&   r'   r'   r(   Útest_json_multiindexm  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 )Nr0  rÇ   )r   r^   r²   r	  zs3://ú/)r®  r>   c                 s   s   | ]}|j V  qd S rú   )rö  )r9   r‹  r'   r'   r(   Ú	<genexpr>„  r‘   z1TestPandasContainer.test_to_s3.<locals>.<genexpr>r×   r   z,Timed out waiting for file to appear on moto)rI   r	   r"   ÚobjectsÚallÚtimeÚsleep)rQ   Zs3_public_bucketr¯  Zmock_bucket_nameZtarget_filerd   Útimeoutr'   r'   r(   Ú
test_to_s3|  s    
zTestPandasContainer.test_to_s3c                 C   sB   t |tƒr"tjjdd�}| |¡ t|ggƒ ¡ }|dks>J ‚d S )Nznot implementedr“   z{"0":{"0":null}})r†  r   rs   r—   r˜   r–   r	   r"   )rQ   Znulls_fixturer™   r—   r&   r'   r'   r(   Útest_json_pandas_nullsŠ  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_series“  s    z-TestPandasContainer.test_readjson_bool_seriesc                 C   s<   t dtddƒddgd�jdd�}| ¡ }d}||ks8J ‚d S )	NTz
2017-01-20z
2017-01-23rA   r?   rg   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(   Ú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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 rú   ©r   r   Ú_crf   )rQ   r   r   r  rf   r'   r'   r(   rÿ   ¯  s    zPTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.__init__c                 S   s   dS )Nr>   r'   r   r'   r'   r(   r¢   µ  s    zITestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.e)r  r  r  rÿ   r¢   r'   r'   r'   r(   Ú_TestObject®  s   r  r   r   ry   r^   r  Ú0)r   r   rf   )r   rè   rç  r"   )rQ   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}}yHáz®Ç"À…ë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}}}yìQ¸…ëÑ¿Ãõ(\�ÂÕ?yHáz®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ú   r‚   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   rm   rh   rÁ   )rQ   r$   rd   r&   r'   r'   r(   Útest_json_uint64â  s
    ÿz$TestPandasContainer.test_json_uint64zTODO(infer_string))r”   Ústrictc           	         sÄ  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œƒ}|j|d�}t d|¡�" tt|ƒ||d�}W d   ƒ n1 s¢0    Y  |dkrÎt	 
d¡‰t ˆ ¡ ¡}n
t |¡}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�tg d¢|d�tg d¢|d�dœƒ‰|dk�r˜t	 
d¡‰ddlm‰  t ‡ ‡‡fdd„ˆjD ƒƒ‰|dk�r°ttdƒƒˆ_tj|ˆdd� d S )Nr   ry   ÚInt64rE   rÇ   rw   rx   ZFloat64)rw   r¥   rx   )TFNrÙ  rw  rÛ  )r   r   r;   rf   r¢   r  Úgrõ   rh   úmode.string_storage)Údtype_backendr1   ÚpyarrowTFÚbooleanr   ©ÚArrowExtensionArrayc                    s$   i | ]}|ˆ ˆj ˆ| d d�ƒ“qS )T©Zfrom_pandas)Úarray)r9   r  ©r'  r$   Úpar'   r(   r<     s   ÿzDTestPandasContainer.test_read_json_dtype_backend.<locals>.<dictcomp>r+   rž  ré   )r	   r   r5   r»   r"   rP   Úoption_contextr   r   rs   ÚimportorskipZ
ArrowDtypeÚstringÚStringDtyper   Úpandas.arraysr'  r   rM   r/   r   r#   )	rQ   Ústring_storager#  r1   rš   rd   Úoutr&   Zstring_dtyper'   r*  r(   Útest_read_json_dtype_backendì  sT    øÿ
ÿ$

øÿ

þÿ
z0TestPandasContainer.test_read_json_dtype_backend)rm   r*   rK   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r¨d
dl
m}	 t|	|j|dd�ƒƒ}t ||¡ d S )Nr$  r   ry   r   rE   rh   r"  r  )r#  r1   r  r   r&  Tr(  )rs   r-  r   r5   r»   r"   rP   r,  r   r   r0  r'  r)  r   r  )
rQ   r1  r#  r1   r+  r\   r2  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#  )rs   rt   r!   r   )rQ   r%   r'   r'   r(   Útest_invalid_dtype_backend>  s    ÿz.TestPandasContainer.test_invalid_dtype_backend)žr  r  r  rs   ZfixturerT   r]   re   rl   r—   Zparametrizerp   rv   r   r€   r�   r„   rœ   r‰   r5   rD   r‹   rZ   Ú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/  r2  r3  r7  rG  rå   rE  rJ  rP  rR  rS  rT  rW  r]  r^  ra  rc  ÚnetworkZ
single_cpurP   ZDatetimeTZDtyperi  rs  ry  r}  rz  r   r  r�  rƒ  r�  r‘  r•  r˜  r�  r   r¦  r§  r   rª  r«  r­  r|  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å  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  r3  r4  r6  r'   r'   r'   r(   r3   [   sØ  





üþ	




þýþ	ÿÿ÷éþ"


þb&

þþ
	þ
þ

þ



&ýþ

ýþ


ýþ
	

÷þ
0ÿ&	 þ(þ&ÿü(þ þìþ	 (&ÿ öþ	þ	þ
ÿÿýÿýõþþþuþÿþ
	þþþÿüìþ!
<r3   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   rA   )Úengine©r   r/   r"   rs   rt   r!   r   ©r\   r2  r'   r'   r(   Útest_invalid_engineG  s    r@  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>  r?  r'   r'   r(   Útest_pyarrow_engine_lines_falseO  s    rA  c                 C   s´   t ddgddggddgddgd	�}| ¡ }t d
d¡� tt|ƒƒ}W d   ƒ n1 sX0    Y  tjtjd�}t ddgddgg|t	ddg|d�t	ddg|d�d�}t
 ||¡ d S )Nr   r   r;   rf   zrow 1zrow 2zcol 1zcol 2rg   zfuture.infer_stringT)Zna_valuerE   r½  )r	   r"   rP   r,  r   r   r/  r5   r»   r   r   r#   )r1   rd   r2  r&   rF   r$   r'   r'   r(   Ú$test_json_roundtrip_string_inferenceW  s    ÿ*ürB  c                  C   sX   t dg d¢iƒ} d}tjt|d��" tƒ }|  |d¡ W d   ƒ n1 sJ0    Y  d S )Nr   rÇ   zuStarting with pandas version 3.0 all arguments of to_json except for the argument 'path_or_buf' will be keyword-only.r   rm   )r	   r   r   r    r   r"   )rd   r%   r\  r'   r'   r(   Útest_json_pos_args_deprecationh  s    ÿrC  r$  c                  C   sH   t tdtgdd�tdtgdd�dœƒ} | jddd	�}d
}||ksDJ ‚d S )Nr   zint64[pyarrow]rE   r   r   r.  r*   TrÂ  z"{"a":1,"b":2}
{"a":null,"b":null}
)r	   r   r   r"   )rd   r&   r$   r'   r'   r(   Útest_to_json_ea_nullt  s    þÿrD  c                  C   s2   d} t t| ƒdd�j}tdƒ}tj||dd� d S )Nz#
{"a": 1, "b": 2}
{"a": 3, "b": 4}
Tr   r   )Úexact)r   r   rK   r   r   rã  )rR   r&   r$   r'   r'   r(   Útest_read_json_lines_rangeindex„  s    rF  )0rG  r   Údecimalr   rç   r   r   rè   rî   r:  r  r5  r5   rs   Zpandas._configr   Zpandas.compatr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr|  ZpandasrP   r   r	   r
   r   r   r   r   r   r   Zpandas._testingZ_testingr   Zpandas.io.jsonr   r)   r2   r3   r@  rA  rB  rC  Z
skip_if_norD  rF  r'   r'   r'   r(   Ú<module>   sR   ,-               {
