o
    �¨Êhó1 ã                   @   sN  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%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„ Z0dd„ Z1e 2d¡dd„ ƒZ3dd„ Z4dS )é    N)Ú	timedelta)ÚDecimal)ÚBytesIOÚStringIO)Úusing_pyarrow_string_dtype)ÚIS64)	ÚNAÚ	DataFrameÚDatetimeIndexÚIndexÚ
RangeIndexÚSeriesÚ	TimestampÚ
date_rangeÚ	read_json)ÚArrowStringArrayÚStringArray)ÚArrowStringArrayNumpySemantics)Úujson_dumpsc               	   C   s°  t ddgddggddgd�} d}d}tjt|d�� zt|d	d
� W n	 ty+   Y nw W d   ƒ n1 s6w   Y  tjt|d�� t|  ¡ d	d
� W d   ƒ n1 sUw   Y  tjt|d�� tddd
�}t || ¡ W d   ƒ n1 sxw   Y  tjt|d�� ztdd	d
�}W n	 ty–   Y nw W d   ƒ n1 s¡w   Y  tjt|d��! ztdd	d
�}W n	 ty¿   Y nw t || ¡ W d   ƒ d S 1 sÑw   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)ÚexpectedÚjsonlÚmsgÚresult© r+   úR/var/www/html/env/lib/python3.10/site-packages/pandas/tests/io/json/test_pandas.pyÚtest_literal_json_deprecation+   sL   ÿÿ€ýÿþ
þÿ€ú	ÿ"û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_equalX   s
   r6   c                   @   sF  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	 
d	g �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>c   s    ÿÿz9TestPandasContainer.categorical_frame.<locals>.<dictcomp>ÚABCDÚbahé   ÚbarÚbazÚfooé   ÚEr8   Úint64©ÚdtypeÚsort©Úname©Úindex)Ú	enumerateÚlistÚreversedr9   Úaranger	   ÚpdÚCategoricalIndex)ÚselfÚdataÚcatr+   r+   r,   Úcategorical_framea   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š™™™™™ñ?é
   rJ   ú
2020-01-01©ÚperiodsÚts)rP   rN   )r   r9   rT   Úfloat64r   rP   Ú
_with_freq)rW   Úserr+   r+   r,   Údatetime_seriesl   s   
ýz#TestPandasContainer.datetime_seriesc                 C   sD   t tj d¡ d¡ttdƒtd�tdddd�d	�}|j	 
d ¡|_	|S )
Nr   )r8   é   rA   rJ   ú
2000-01-01r8   ÚB©r^   Úfreq©r   rP   )r	   r9   r:   r;   r<   r   rR   Úobjectr   rP   ra   )rW   Údfr+   r+   r,   Údatetime_framex   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©rP   r   ©r5   ©r	   r   r%   r   Úcopyr6   ©rW   r5   rk   rX   r*   r'   r+   r+   r,   Ú test_frame_double_encoded_labels„   s   ýz4TestPandasContainer.test_frame_double_encoded_labelsr5   )Ú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?   rm   r   ÚxÚyrn   ro   rp   rr   r+   r+   r,   Útest_frame_non_unique_index�   s
   "z/TestPandasContainer.test_frame_non_unique_indexrP   r   c                 C   sn   t ddgddggddgddgd�}d	|› d
�}tjt|d�� |j|d� W d   ƒ d S 1 s0w   Y  d S )Nr   r   r?   rm   r   ru   rv   rn   z+DataFrame index must be unique for orient='ú'r   ro   ©r	   ÚpytestÚraisesr$   r%   ©rW   r5   rk   r)   r+   r+   r,   Ú"test_frame_non_unique_index_raises™   s
   ""ÿz6TestPandasContainer.test_frame_non_unique_index_raisesrt   r/   rX   r   r   r?   rm   ç      ø?ç      @g      @g      @r   é   Ú20130101Ú20130102c                 C   s¨   t |ddgddgd�}tt|j|d�ƒ|dgd�}|dkrAt |ƒ}|jd d …df jd	kr@| d|jd d …df  tj	¡d
 ¡ n|dkrL|}ddg|_
t ||¡ d S )Nr   r   ru   rn   ro   )r5   Úconvert_datesr/   r   údatetime64[ns]é@B rt   zx.1)r	   r   r   r%   ÚilocrK   ÚisetitemÚastyper9   rI   r   r!   r&   )rW   r5   rX   rk   r*   r'   r+   r+   r,   Útest_frame_non_unique_columns    s   ÿ&€
z1TestPandasContainer.test_frame_non_unique_columns)rP   r   r.   c                 C   sn   t ddgddggddgddgd�}d	|› d
�}tjt|d�� |j|d� W d   ƒ d S 1 s0w   Y  d S )Nr   r   r?   rm   r   r   ru   rn   z-DataFrame columns must be unique for orient='rx   r   ro   ry   r|   r+   r+   r,   Ú$test_frame_non_unique_columns_raises¾   s
   ""ÿz8TestPandasContainer.test_frame_non_unique_columns_raisesc                 C   ó   |  ¡ |j dd�ksJ ‚d S )Nr   ro   ©r%   )rW   Úfloat_framer+   r+   r,   Útest_frame_default_orientÆ   ó   z-TestPandasContainer.test_frame_default_orientrK   FÚconvert_axesTc                 C   ó4   t |j|d�ƒ}t||||d�}|}t|||ƒ d S ©Nro   ©r5   r�   rK   ©r   r%   r   r6   )rW   r5   r�   rK   r�   rX   r*   r'   r+   r+   r,   Útest_roundtrip_simpleÉ   s   z)TestPandasContainer.test_roundtrip_simplec                 C   r‘   r’   r”   )rW   r5   r�   rK   Ú	int_framerX   r*   r'   r+   r+   r,   Útest_roundtrip_intframeÓ   s   z+TestPandasContainer.test_roundtrip_intframeNÚU3c                 C   sâ   t t d¡dd„ tdƒD ƒdd„ tdƒD ƒ|d�}t|j|d�ƒ}t||||d	�}| ¡ }|s5| tj	¡}|rL|d
v rL|j
 tj	¡|_
|j tj	¡|_n|dkr[|r[|j
 tj	¡|_
n|ri|dkri|j
 tj	¡|_
t|||ƒ d S )N)éÈ   rd   c                 S   ó   g | ]}t |ƒ‘qS r+   ©Ústr©r=   r>   r+   r+   r,   Ú
<listcomp>à   ó    z?TestPandasContainer.test_roundtrip_str_axes.<locals>.<listcomp>rd   c                 S   rš   r+   r›   r�   r+   r+   r,   rž   á   rŸ   r™   )r   rP   rK   ro   r“   rn   r.   rt   )r	   r9   Úzerosr3   r   r%   r   rq   rˆ   rI   r   rP   r6   )rW   r5   r�   rK   rk   rX   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 	|s,t
nd¡|_d |j_t|||ƒ d S )Nrn   z.Can't have duplicate index values for orient 'z')©Úreasonro   ©r5   r�   ústring[pyarrow_numpy])Úapplymarkerrz   ÚmarkÚxfailr   r%   r   rq   rP   rˆ   rœ   rN   r6   )	rW   Úrequestr5   rZ   r�   Úusing_infer_stringrX   r*   r'   r+   r+   r,   Útest_roundtrip_categoricalû   s   
ÿÿ
ÿz.TestPandasContainer.test_roundtrip_categoricalc                 C   sv   t ƒ }t|j|d�ƒ}t|||d�}|dkr'tg |rtntd�}t ||d�}n|dv r/t ƒ }n| ¡ }t 	||¡ d S )Nro   r¤   rt   rJ   rn   )
r	   r   r%   r   r   Úfloatrj   rq   r!   r&   )rW   r5   r�   Úempty_framerX   r*   Úidxr'   r+   r+   r,   Útest_roundtrip_empty  s   z(TestPandasContainer.test_roundtrip_emptyc                 C   sd   t |j|d�ƒ}t|||d�}| ¡ }|s*|j tj¡d }|dkr'| t	¡}||_t
|||ƒ d S )Nro   r¤   r…   rt   )r   r%   r   rq   rP   Úviewr9   rI   rˆ   rœ   r6   )rW   r5   r�   rl   rX   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di | d
¡ t	j
¡¤Ž}t|||ƒ d S )N)r   r   r?   rm   Úe)ç        ç      ð?ç       @ç      @ç      @)r³   r´   r³   r´   r³   )Úfoo1Úfoo2Úfoo3Úfoo4Úfoo5)TFTFT©ÚArf   ÚCÚD)rX   rP   ro   r¤   Únumberr+   )r   r	   r   r%   r   rq   ÚassignÚselect_dtypesrˆ   r9   rI   r6   )	rW   r5   r�   rP   r/   rk   rX   r*   r'   r+   r+   r,   Útest_roundtrip_mixed1  s   üz(TestPandasContainer.test_roundtrip_mixedz9#50456 Column multiindex is stored and loaded differently)r£   r{   Ú2022ÚJANÚFEBÚ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€   rd   r   rt   ro   )	r	   rU   Ú
MultiIndexÚfrom_arraysr   r%   r   r!   r&   )rW   r   rk   rX   r*   r+   r+   r,   Útest_roundtrip_multiindexE  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   sD   t jt|d�� tt|ƒ|d� W d   ƒ d S 1 sw   Y  d S )Nr   ro   )rz   r{   r$   r   r   )rW   rX   r)   r5   r+   r+   r,   Ú$test_frame_from_json_bad_data_raisesZ  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 ¡s"J ‚t ddgg d	¢gƒ}tt|j|d�ƒ|||d�}t |jd ¡sDJ ‚d S )
Nr   r   ©rd   rC   é   ro   r“   ©r   r   Ú1Ú2)Ú4Ú5Ú6)r	   r   r   r%   r9   Úisnanr†   )rW   r5   r�   rK   Únum_dfr*   Ú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]rJ   )r   r   r	   r9   Únanr!   r&   )rW   rK   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 ¡s%J ‚d S )Nr   r   rÎ   rÐ   rJ   )r	   Úlocr   r%   r   r9   rÖ   r†   )rW   rÜ   rK   rk   rX   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çûï?r€   r´   )gûÿÿÿÿÿï?rG   r´   c                 C   s2   t d|igƒ}|j|d�}|d|› d�ksJ ‚d S )NÚa_float)Údouble_precisionz{"a_float":{"0":ú}}©r	   r%   )rW   ÚvalueÚ	precisionÚexpected_valrk   Úencodedr+   r+   r,   Ú"test_frame_to_json_float_precision«  s   z6TestPandasContainer.test_frame_to_json_float_precisionc                 C   óP   t g d¢ƒ}d}tjt|d�� |jdd� W d   ƒ d S 1 s!w   Y  d S ©N©r   r   r€   z+Invalid value 'garbage' for option 'orient'r   Úgarbagero   ry   )rW   rk   r)   r+   r+   r,   Útest_frame_to_json_except¼  ó
   "ÿ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   rJ   F©Úcheck_index_type)	r	   Ú_is_mixed_typer   r%   r   ÚdictÚdtypesr!   r&   )rW   rk   rX   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ÚtestrO   r   ro   z{"test":{}}râ   ©rW   rk   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   Úi8rJ   Frð   )
r	   rˆ   rò   r%   r!   r&   r   r   ró   rô   )rW   rk   rX   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 ||¡ q$t	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[   r   rF   çš™™™™™¹?g{®Gáz„?)é   r   rD   gš™™™™™É?g{®Gáz”?)r8   r€   rE   g333333Ó?g¸…ëQ¸ž?)é(   rd   Úquxgš™™™™™Ù?g{®Gáz¤?Úabcd)Ú1stÚ2ndÚ3rdÚ4thÚ5thrn   ©rt   rP   r   ro   Fr¤   r.   r   r/   )r	   rR   rò   rq   r   r%   r   r!   r&   r   r4   rP   Úshaper   )rW   Úvalsrk   Úrightr5   Ú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©rh   )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½   ri   z19920106 18:21:32.12ÚnsÚdater�   r€   Úmodifiedr   ÚioÚjsonrX   ztsframe_v012.json)Úaxisztsframe_iso_v012.jsonF)Úcheck_column_type)r   r
   r9   Úasarrayr	   r   Úas_unitr†   r   Úget_locrU   ÚNaTÚosÚpathÚjoinr   r!   r&   r1   )
rW   ÚdatapathÚdtirk   ÚdirpathÚv12_jsonÚdf_unserÚdf_isoÚv12_iso_jsonÚdf_unser_isor+   r+   r,   Útest_v12_compatû  s0   
û÷z#TestPandasContainer.test_v12_compatc                 C   sž   t dddd�}tt|ƒd d�}tg d¢g d¢g d¢g d	¢g d
¢g d¢dœ|d�}|j |s0tjnd¡|_t|j	dd�ƒ}t
|dd�}tj||ddddd� d S )NÚ20000101r[   Úhrg   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ô )
Ú78c608f1Ú64a99743Ú13d2ff52Úca7f4af2Ú97236474Úbde7e214Ú1a6bde47Úb1190be5Ú7a669144Ú8d64d068)
gD!¸€†í¥¿gIxJ ˆðü¿gÛòµ%â
@g�¨PÝ\<è¿gòÐ�÷ÛÞ¿gPl‰…ï—ë?gFàzÚnñ?g5mH/î?gp®Hé%Ÿ¿gáIðö?)
Ú14f04af9Úd085da90Ú4bcfac83Ú81504cafÚ2ffef4a9Ú08e2f5c4Ú07e1af03Úaddbd4a7Ú1f6a09baÚ4bfc4d87)
i¥/iŽÞØiÑYiÛ6i‚IÀ i;ª>i¶Á	iÒ(¡ i0q{iÑª‰)Úfloat_1Úint_1Ústr_1Úfloat_2Ústr_2Úint_2rO   r¥   rt   ro   T)rñ   r  Ú	by_blocksÚcheck_exact)r   r
   rR   r	   r   rˆ   r9   Ústr_r   r%   r   r!   r&   )rW   rª   rP   Údf_mixedrX   Ú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s!J ‚t d|giƒ}d}tjt|d�� | ¡  W d   ƒ n1 s@w   Y  t |gd	gd
œddgd�}tjt|d�� | ¡  W d   ƒ n1 shw   Y  |jtd�}d|› d�}	||	ksJ ‚|jtd�d|› d�ks�J ‚d S )Nc                   @   s$   e Zd Zddd„Zdefdd„ZdS )zFTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThingÚreturnNc                 S   s   || _ t |¡| _d S ©N)ÚhexedÚbytesÚfromhexÚbinary)rW   rH  r+   r+   r,   Ú__init__  s   zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__c                 S   s   | j S rG  )rH  ©rW   r+   r+   r,   Ú__str__ƒ  s   zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__©rF  N)Ú__name__Ú
__module__Ú__qualname__rL  rœ   rN  r+   r+   r+   r,   ÚBinaryThing~  s    
rS  Ú574b4454ba8c5eb4f98a8f45r¾   z{"A":{"0":"ú"}}z6Unsupported UTF-8 sequence length when encoding stringr   r   ©r¾   rf   rf   r   ©Údefault_handlerz"},"B":{"0":1}})r	   rH  r%   rz   r{   ÚOverflowErrorrœ   )
rW   rS  rH  ÚbinthingÚdf_printableÚdf_nonprintabler)   rC  r*   r'   r+   r+   r,   Útest_frame_nonprintable_bytes{  s(   
ÿ
ÿ

ÿz1TestPandasContainer.test_frame_nonprintable_bytesc                 C   s<   t dd dgddgiƒ ¡ }ddd › d�}||ksJ ‚d S )NrD   i † r   rF   i9  ú{"z":{"0":1},"foo":{"0":1337}}râ   ©rW   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 s$w   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   rO   z.Series index must be unique for orient='index'r   rP   ro   rt   Úseries)r5   Útypr.   )r   rz   r{   r$   r%   r!   Úassert_series_equalr   r   Úassert_equalr/   )rW   Úsr)   Úunserializedr+   r+   r,   Útest_series_non_unique_index§  s   ÿÿþÿz0TestPandasContainer.test_series_non_unique_indexc                 C   r‹   )NrP   ro   rŒ   )rW   Ústring_seriesr+   r+   r,   Útest_series_default_orient¹  r�   z.TestPandasContainer.test_series_default_orientc                 C   sn   t |j|d�ƒ}t|d|d�}|}|r|dv r|j d¡|_|dv r(|jdd�}|d	kr/d |_t ||¡ d S )
Nro   ra  ©rb  r5   r  r¥   ©r/   r.   Tr0   rt   )	r   r%   r   rP   rˆ   r2   rN   r!   rc  )rW   r5   rh  rª   rX   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 r|jdd�}|dkr#d |_t ||¡ d S )Nro   ra  )rb  r5   rK   rk  Tr0   rt   ©r   r%   r   r2   rN   r!   rc  )rW   r5   rK   Úobject_seriesrX   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 r)|j tj¡|_t	 
||¡ d S )N©rP   rK   ro   ra  rj  Tr0   rt   )r   r9   r`   r   r%   r   r2   rP   rˆ   r!   rc  )rW   r5   Úempty_seriesrX   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 r|jdd�}|dkr"d |_t ||¡ d S )Nro   ra  rj  rk  Tr0   rt   rm  )rW   r5   rc   rX   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 r'|jdd	�}t ||¡ d S )
NrÏ   ©r   r   r?   rm   r²   ÚfrO   ro   ra  rj  rk  Tr0   )	r   r3   r   r%   r   rq   r2   r!   rc  )rW   r5   rK   re  rX   r*   r'   r+   r+   r,   Útest_series_roundtrip_numericï  s   z1TestPandasContainer.test_series_roundtrip_numericc                 C   rè   ré   )r   rz   r{   r$   r%   )rW   re  r)   r+   r+   r,   Útest_series_to_json_exceptû  rí   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=@ry  ry  ra  T)rb  Úprecise_floatFrð   )r   r   r   r%   r!   rc  ©rW   re  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 )Nrx  ra  ©rb  rK   rd   r€   )r   r   r   r%   r9   rI   r!   rc  )rW   re  r*   r'   r+   r+   r,   Útest_series_with_dtype  s   z*TestPandasContainer.test_series_with_dtypezdtype,expectedre   r„   rJ   l    ,ŸUqc                 C   s8   t dgdd�}t| ¡ ƒ}t|d|d�}t ||¡ d S )Nre   r„   rJ   ra  r}  )r   r   r%   r   r!   rc  )rW   rK   r'   re  rX   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 )Nrx  T)rz  ©r	   r   r   r%   r!   r&   ©rW   rk   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Ï   rt  rI   rp  ©rb  )r   r3   r   r   r%   r!   rc  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¾   rf   r¿   rO   r€  r�  r+   r+   r,   Útest_reconstruction_index$  s   z-TestPandasContainer.test_reconstruction_indexc                 C   sR   t  d¡�}|||fD ]}| |¡ t|ƒ qW d   ƒ d S 1 s"w   Y  d S )Nú	test.json)r!   Úensure_cleanr%   r   )rW   r�   r–   rl   r  rk   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 s+J ‚d S )Nra  rƒ  F)Úcheck_names)r   r%   r   r!   r&   rc  rN   )rW   rc   rl   r  r*   r+   r+   r,   Útest_axis_dates3  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 )Nr�   r  r  r´   rF   ©Ú	date_unitF©rƒ   rù   rI   rO   ra  rƒ  )r   r  r   r%   r   r!   r&   rq   r/   r°   rˆ   r   rP   rc  )rW   rc   rl   rk   r  r*   r'   r_   r+   r+   r,   Útest_convert_dates?  s    z&TestPandasContainer.test_convert_datesÚdate_formatÚepochÚisoÚ	as_objectÚdate_typc                 C   sl   |dddd�t jg}|r| d¡ t||d�}|j|d�}|dkr$d}nd	}|r.| d
d¡}||ks4J ‚d S )Niä  r   )ÚyearÚmonthÚdayr   rO   ©r�  r‘  z+{"1577836800000":1577836800000,"null":null}zA{"2020-01-01T00:00:00.000":"2020-01-01T00:00:00.000","null":null}Ú}ú	,"a":"a"})rU   r  Úappendr   r%   Úreplace)rW   r�  r“  r”  rX   rb   r*   r'   r+   r+   r,   Útest_date_index_and_valuesW  s   
ÿz.TestPandasContainer.test_date_index_and_valuesÚ
infer_word)Ú
trade_timer  ÚdatetimeÚsold_atr  Ú	timestampÚ
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   rU   r  r   r   r   r!   r&   )rW   rž  rX   r'   r*   r+   r+   r,   Útest_convert_dates_infern  s   ÿz,TestPandasContainer.test_convert_dates_inferzdate,date_unit))ú20130101 20:43:42.123N)ú20130101 20:43:42re  )r¦  Ú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< |r-|jd|d�}n|jdd�}tt	|ƒƒ}| 
¡ }t ||¡ d S )Nr  r  r   rC   r’  ©r�  r�  r˜  )r   r  rU   r  r†   r   r  r%   r   r   rq   r!   r&   )rW   r  r�  rl   rk   r  r*   r'   r+   r+   r,   Útest_date_format_frame…  s   z*TestPandasContainer.test_date_format_framec                 C   sJ   |}d}t jt|d�� |jddd� W d   ƒ d S 1 sw   Y  d S )Nú*Invalid value 'foo' for option 'date_unit'r   r’  rF   rª  )rz   r{   r$   r%   )rW   rl   rk   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< |r"|jd|d�}n|jdd�}tt	|ƒdd	�}| 
¡ }t ||¡ d S )
Nr  rO   r   rC   r’  rª  r˜  ra  rƒ  )r   r   r  rP   rU   r  r†   r%   r   r   rq   r!   rc  )rW   r  r�  rc   r_   r  r*   r'   r+   r+   r,   Útest_date_format_series¤  s   z+TestPandasContainer.test_date_format_seriesc                 C   sX   t tdƒ|jd�}d}tjt|d�� |jddd� W d   ƒ d S 1 s%w   Y  d S )Nr¦  rO   r¬  r   r’  rF   rª  )r   r   rP   rz   r{   r$   r%   )rW   rc   r_   r)   r+   r+   r,   Útest_date_format_series_raises»  s
   "ÿz2TestPandasContainer.test_date_format_series_raisesÚunit)re  r¨  r©  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 )Nr§  r  r  z19710101 20:43:42r   z21460101 20:43:42r   rd   r‘  rª  rŒ  )r   r  r   r  r†   rU   r  r%   r   r   r!   r&   )rW   r°  rl   rk   Údlr  r*   r+   r+   r,   Útest_date_unitÁ  s   z"TestPandasContainer.test_date_unit)re  r¨  r©  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[ú]rJ   z2022-01-01T11:22:33.123456©rK   rP   )r  Údate_objr’  rª  r   r  rµ  rŽ  F)rñ   Úcheck_dtype)r
   r9   Ú
datetime64r	   r   rj   r   r%   Úseekr!   r&   r   )rW   r°  rP   rk   Ú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   )rW   re  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   )rC   r   ÚABr   r�   r  rC   ÚintsTÚboolsr]   )r½  r¾  rJ   )r	   r9   r:   r;   r<   rR   r   r3   r   rP   r   r%   r   rI   Úbool_r!   r&   )rW   Ú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 s;w   Y  t ||¡ d S )
Nr  r  rX   z	teams.csvrn   z.The 'downcast' keyword in fillna is deprecatedr   F)Údowncast)rU   Úread_csvr%   r   r   ÚreindexrP   r   r!   r"   r#   Úfillnar9   rÚ   r&   )rW   r  r  rk   re  r*   Úresr)   r+   r+   r,   Útest_round_trip_exception  s   
ÿz-TestPandasContainer.test_round_trip_exceptionzfield,dtypeÚ
created_atÚUTC)ÚtzÚ	closed_atÚ
updated_atc                 C   s4   d}|j |d� t|jdd�}|| j|ksJ ‚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Ž  )Úserve_contentr   ÚurlrK   )rW   ÚfieldrK   Ú
httpserverrX   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sAJ ‚tt| ¡ ƒdd� |¡}t ||¡ t
tdƒtdd�gƒ}|d	 jdkshJ ‚t |tt| ¡ ƒƒ |¡¡ d S )Nc                 S   s   t j| dd�S )Nr¨  ©r°  )rU   Úto_timedelta)ru   r+   r+   r,   Ú<lambda>;  s    z4TestPandasContainer.test_timedelta.<locals>.<lambda>é   rC   ©Úsecondsztimedelta64[ns]ra  rƒ  r   r   rO   )r   r   rK   r   r   r%   Úapplyr!   rc  r   r	   r&   )rW   Ú	converterrb   r*   Úframer+   r+   r,   Útest_timedelta:  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 )NrÖ  ©ÚdaysrC   r×  r   r   r�   )Ústartr^   ©r   r   r?   r  rŒ  rÓ  r   r?   )r	   r   r   r   r%   r   rU   rÔ  r   Úto_datetimer?   r!   r&   )rW   rÛ  rX   r*   r+   r+   r,   Útest_timedelta2N  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 )
NrÖ  r�   r   rJ   r  rŒ  rI   Frð   )r   r   r	   rj   rU   Ú	Timedeltar  Ú_valuer   r%   r   r!   r&   )rW   Útdr_   rÛ  r'   rX   r*   r+   r+   r,   Útest_mixed_timedelta_datetime\  s    ÿz1TestPandasContainer.test_mixed_timedelta_datetimeÚtimedelta_typc                 C   sp   |dd�|dd�t jg}|r| d¡ t||d�}|dkr d}nd}|r*| d	d
¡}|j|d�}||ks6J ‚d S )Nr   rÝ  r   r   rO   r’  zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}r™  rš  r˜  )rU   r  r›  r   rœ  r%   )rW   r“  r�  rç  rX   rb   r'   r*   r+   r+   r,   Útest_timedelta_to_jsonh  s   
ÿz*TestPandasContainer.test_timedelta_to_jsonc                 C   sB   |dd�g}t ||d�}|r| t¡}| ¡ }d}||ksJ ‚d S )Né*   )ÚmillisecondsrO   z	{"42":42})r   rˆ   rj   r%   )rW   r“  rç  rX   rb   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   é   rW  Frð   )rj   r	   rœ   r   r   r%   r!   r&   )rW   rã   rÛ  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s)J ‚d S )Nc                 S   s(   t | tƒrdd| jfd| jfgS t| ƒS )N)ÚmathjsÚComplexÚreÚim)Ú
isinstanceÚcomplexÚrealÚimagrœ   ©Úobjr+   r+   r,   Údefault“  s   
zBTestPandasContainer.test_default_handler_indirect.<locals>.defaulté	   r   ÚSTRrd   éûÿÿÿrÚ   zN/Ar…  r   r   r   zR[9,[[1,null],["STR",null],[[["mathjs","Complex"],["re",4.0],["im",-5.0]],"N\/A"]]]r/   ©rX  r5   )r	   ró  r¬   r   )rW   rø  Údf_listr'   r+   r+   r,   Útest_default_handler_indirect’  s   þþÿz1TestPandasContainer.test_default_handler_indirectc                 C   sP   t ddtddƒgtdƒd tddƒgdœd	d
gd�}d}|jtdd�|ks&J ‚d S )Nr   gffffff@rd   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œ   )rW   rk   r'   r+   r+   r,   Ú,test_default_handler_numpy_unsupported_dtype§  s   $þÿz@TestPandasContainer.test_default_handler_numpy_unsupported_dtypec                    s®   d‰ ‡ fdd„}t jtˆ d�� tdddtƒ giƒj|d� W d   ƒ n1 s(w   Y  t jtˆ d�� tdddtd	d
ƒgiƒj|d� W d   ƒ d S 1 sPw   Y  d S )NÚraisinc                    s   t ˆ ƒ‚rG  )Ú	TypeErrorrö  ©r)   r+   r,   Úmy_handler_raises·  s   zJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raisesr   r   r   r   rW  rd   rû  )rz   r{   r  r	   rj   r%   ró  )rW   r  r+   r  r,   Útest_default_handler_raises´  s   ÿÿÿ"ÿz/TestPandasContainer.test_default_handler_raisesc                 C   sn   t dg d¢iƒ}|d |d< | ¡ }|d  d¡|d< || ¡ ks#J ‚|d }|d }| ¡ | ¡ ks5J ‚d S )Nr¾   )r   r   r?   r   r   r   r   rf   Úcategory)r	   r%   rˆ   )rW   rk   r'   re  Ú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 )	Nr�   r€   ú
US/Eastern©r^   rÊ  Úutcr]   rV  r¾   )r   Ú
tz_convertÚtz_localizer	   rq   r%   r   )rW   Útz_rangeÚtz_naiverk   Údf_naiver'   ÚstzÚ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s$J ‚t	tj d¡ d¡ƒ}tj|jd d…< | d¡}| ¡ }|| ¡ ksHJ ‚d S )Nr   )r[   rd   é   ÚSparser[   )
r	   r9   r:   r;   r<   rÚ   rÝ   rˆ   r%   r   )rW   rk   Úsdfr'   re  Ússr+   r+   r,   Útest_sparseà  s   

zTestPandasContainer.test_sparser_   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sJ ‚d S )Nz"2013-01-10T05:00:00.000Z"T©Ú	iso_dates)r   Úto_pydatetime©rW   r_   Ú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   r]   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sJ ‚t | t¡dd�|ks)J ‚td|iƒ}t |dd�}||ks;J ‚t | dti¡dd�sHJ ‚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ˆ   rj   r	   )rW   r  r  Údfexpr  rk   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s!J ‚td|iƒ}t|dd�}||ks3J ‚t| dti¡dd�s@J ‚d S )	Nz2013-01-01 05:00:00r   r]   z5["2013-01-01T05:00:00.000","2013-01-02T05:00:00.000"]zD{"DT":{"0":"2013-01-01T05:00:00.000","1":"2013-01-02T05:00:00.000"}}Tr  r   )r   r   rˆ   rj   r	   )rW   r  r  r!  rk   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_jsonl1  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   rN   r	   r!   r&   )rW   Ús3_public_bucket_with_dataÚs3sor*   r'   r+   r+   r,   Útest_read_s3_jsonl8  s   ýz&TestPandasContainer.test_read_s3_jsonlc              	   C   sœ   t  d¡�?}t|ddd��}| d¡ W d   ƒ n1 sw   Y  t|dd�}tdd	gdd	ggd
dgd�}t  ||¡ W d   ƒ d S 1 sGw   Y  d S )Nztmp_items.jsonÚwzutf-8©Úencodingr   Tr   r   r   r   r   r   )r!   rˆ  ÚopenÚwriter   r	   r&   )rW   r  Úinfiler*   r'   r+   r+   r,   Útest_read_local_jsonlE  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â€�rD   rF   r   r   r   )r   r   r	   r!   r&   ©rW   r  r*   r'   r+   r+   r,   Útest_read_jsonl_unicode_charsN  s   z1TestPandasContainer.test_read_jsonl_unicode_charsÚbigNumc                 C   sp   t |tdgd�}| ¡ }dt|ƒ d }||ksJ ‚t|tdgdgd�}| ¡ }dt|ƒ d }||ks6J ‚d S )	NÚ	articleIdr´  ú{"articleId":r™  r   ©rK   rP   r   ú{"0":{"articleId":rá   )r   rj   r%   rœ   r	   )rW   r3  ra  r  r'   rk   r+   r+   r,   Útest_to_json_large_numbers_  s   z.TestPandasContainer.test_to_json_large_numberslûÿÿÿ        l            c                 C   sž   t dt|ƒ d ƒ}d}tjt|d�� t|ƒ W d   ƒ n1 s"w   Y  t dt|ƒ d ƒ}tjt|d�� t|ƒ W d   ƒ d S 1 sHw   Y  d S )Nr5  r™  z#Value is too small|Value is too bigr   r7  rá   )r   rœ   rz   r{   r$   r   )rW   r3  r  r)   r+   r+   r,   Útest_read_json_large_numbersl  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"}ra  rƒ  gg“_SDr4  rO   z.{"0": {"articleId": "1404366058080022500245"}}r   rn   )r   r   r   r!   rc  r	   r&   r1  r+   r+   r,   Útest_read_json_large_numbers2x  s   z1TestPandasContainer.test_read_json_large_numbers2c                 C   sâ   t ddgddggddgd�}|jddd�}d	}||ksJ ‚t d
dgddggddgd�}|jddd�}d}||ks:J ‚t tt|ƒdd�|¡ t ddgddggddgd�}|jddd�}d}||kscJ ‚t tt|ƒdd�|¡ d S )Nr   r   r   r   r   r.   T©r5   r   z{"a":1,"b":2}
{"a":1,"b":2}
zfoo}rD   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É, 17ó    ó   aó   bó   c)r>  r@  rA  rB  )s   EE, 17r?  r@  rA  rB  )r>  ó   øür@  rA  rB  )r?  r@  rA  rB  )rC  r@  rA  rB  )ó   Aøür?  r@  rA  rB  r?  rA  rB  rD  r  c                 C   sx   t dd„ |D ƒ|d�}d}t d¡� }|j||d� tt|ƒ|d�}tj||dd� W d   ƒ d S 1 s5w   Y  d S )	Nc                 S   s$   g | ]}t |tƒr| d ¡n|‘qS )úlatin-1)rò  rI  Údecode)r=   ru   r+   r+   r,   rž   ¯  s   $ z;TestPandasContainer.test_latin_encoding.<locals>.<listcomp>rJ   rE  r‡  r+  F)Úcheck_categorical)r   r!   rˆ  r%   r   r   rc  )rW   rK   r=  rb   r,  r  Ú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s%J ‚d S )Nr   r   T)rP   Údeep)r	   rœ   Úmemory_usageÚsumr%   )rW   rk   Úsize_beforeÚ
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€   rd   rn   Útablero   ©r	   r%   r   r   r!   r&   )rW   rP   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Õ   rà  rR  ro   rS  )rW   r'   rT  r*   r+   r+   r,   Ú#test_from_json_to_json_table_dtypesÎ  s   z7TestPandasContainer.test_from_json_to_json_table_dtypeszincorrect na conversion)rt   r.   rP   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ê   rI   rJ   )Nrµ   r¶   r`   )NÚ r?   rj   ©TFTÚbool©r   r   Nr  )r\   Nz
2020-01-03r„   )ÚIntegerÚFloatÚObjectÚBoolÚCategoryÚDatetimero   ©r5   rK   )r	   Ú	from_dictr   r%   r   r   r!   r&   )rW   r5   r'   rT  r*   r+   r+   r,   Ú%test_to_json_from_json_columns_dtypes×  s0   ÿúÿúýz9TestPandasContainer.test_to_json_from_json_columns_dtypes)r   r?   c                 C   sn   t ddgddgddgdœƒ}|jdd	�}d
}tjt|d�� t|d|d� W d   ƒ d S 1 s0w   Y  d S )Nr   r   r¶   r·   rÔ   rÕ   rà  rR  ro   z)cannot pass both dtype and orient='table'r   ra  ©r	   r%   rz   r{   r$   r   )rW   rK   rk   rT  r)   r+   r+   r,   Ú!test_read_json_table_dtype_raises÷  s   "ÿz5TestPandasContainer.test_read_json_table_dtype_raises)rP   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_equalrP   r   )rW   r5   r'   r*   r+   r+   r,   Ú%test_read_json_table_empty_axes_dtype   s   z9TestPandasContainer.test_read_json_table_empty_axes_dtypec                 C   st   t ddgddggddgddgd	�}|jd
d�}d}tjt|d�� t|d
dd� W d   ƒ d S 1 s3w   Y  d S )Nr   r   r€   rd   r´   rµ   rP  rQ  rn   rR  ro   z0cannot pass both convert_axes and orient='table'r   Tr¤   rd  )rW   rk   rT  r)   r+   r+   r,   Ú(test_read_json_table_convert_axes_raises	  s   ""ÿz<TestPandasContainer.test_read_json_table_convert_axes_raiseszdata, expectedrd   rC   r   )r   rX   rF   ri   rê   r¾   rM   )rN   rX   )rN   rP   c                 C   s(   |j ddd�}t |¡}||ksJ ‚d S )Nrt   F©r5   rP   )r%   r  Úloads©rW   rX   r'   r*   r+   r+   r,   Útest_index_false_to_json_split  s    
z2TestPandasContainer.test_index_false_to_json_splitc                 C   sL   |j ddd�}t |¡}tjjj|dd�t|ƒjdd�dœ}||ks$J ‚d S )NrR  Fri  rO   r.   ro   )ÚschemarX   )r%   r  rj  rU   r  Úbuild_table_schemar	   Úto_dict©rW   rX   r*   r'   r+   r+   r,   Útest_index_false_to_json_table6  s   
þz2TestPandasContainer.test_index_false_to_json_tablec                 C   ób   t ddgddggddgd�}d}tjt|d	�� |j|d
d� W d   ƒ d S 1 s*w   Y  d S )Nr   r   rd   rC   r   r   r   zU'index=False' is only valid when 'orient' is 'split', 'table', 'records', or 'values'r   Fri  ry   r|   r+   r+   r,   Útest_index_false_error_to_jsonS  ó   ÿ"ÿz2TestPandasContainer.test_index_false_error_to_jsonr.   c                 C   rr  )Nr   r   rd   rC   r   r   r   zS'index=True' is only valid when 'orient' is 'split', 'table', 'index', or 'columns'r   Tri  ry   r|   r+   r+   r,   Útest_index_true_error_to_jsona  rt  z1TestPandasContainer.test_index_true_error_to_jsonrR  c                 C   sD   t ddgddgdœƒ}|j||d�}tt|ƒ|d�}t ||¡ d S )Nr   r   r€   rd   r…  ri  ro   rS  )rW   r5   rP   r'   rT  r*   r+   r+   r,   Ú"test_index_false_from_json_to_jsono  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}ra  rP   rj  z2019-01-01 11:00:00zM8[ns, UTC]rJ   éX   rO   )r   r   r
   r   r!   rc  )rW   r*   Úexp_dtir'   r+   r+   r,   Útest_read_timezone_informationy  s   
ÿz2TestPandasContainer.test_read_timezone_informationrÏ  )zs3://example-fsspec/zgcs://another-fsspec/file.jsonzhttps://example-site.com/datazsome-protocol://data.txtc                 C   s2   t td|› d�ƒƒ}td|giƒ}t ||¡ d S )Nz{"url":{"0":"rU  rÏ  r$  )rW   rÏ  r*   r'   r+   r+   r,   Útest_read_json_with_url_value‚  s   z1TestPandasContainer.test_read_json_with_url_valueÚcompression)rW  z.gzz.bz2z.tarc                 C   sR   d› d|› �}t jtd|› d�d�� t|ƒ W d   ƒ d S 1 s"w   Y  d S )NÁè  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz.jsonzFile z does not existr   )rz   r{   ÚFileNotFoundErrorr   )rW   r{  Úlong_json_pathr+   r+   r,   Ú'test_read_json_with_very_long_file_path‘  s   ÿ
"ûz;TestPandasContainer.test_read_json_with_very_long_file_pathzdate_format,key)r‘  i \&)r’  Ú
P1DT0H0M0Sc                 C   s@   t dggt d¡gd�}d|› d�}|j|d�}||ksJ ‚d S )Nr   Ú1Dr   r^  z
":{"0":1}}r˜  )r	   rU   rã  r%   )rW   r�  Úkeyrk   r'   r*   r+   r+   r,   Útest_timedelta_as_labelŸ  s   z+TestPandasContainer.test_timedelta_as_labelzorient,expected)rP   z{"('a', 'b')":{"('c', 'd')":1}})r   z{"('c', 'd')":{"('a', 'b')":1}}rW  z,Produces JSON but not in a consistent manner)Úmarksc                 C   s2   t dggdgdgd�}|j|d�}||ksJ ‚d S )Nr   r…  )r?   rm   rn   ro   râ   ©rW   r5   r'   rk   r*   r+   r+   r,   Útest_tuple_labels©  s   z%TestPandasContainer.test_tuple_labelsÚindent)r   r   rd   c                 C   s†   t ddgddggddgd�}|j|d�}d	| }d
|› d|› |› d|› |› d|› d|› d|› |› d|› |› d|› d�}||ksAJ ‚d S )NrF   rD   rE   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â   )rW   r‡  rk   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))rt   zã{
    "columns":[
        "a",
        "b"
    ],
    "index":[
        0,
        1
    ],
    "data":[
        [
            "foo",
            "bar"
        ],
        [
            "baz",
            "qux"
        ]
    ]
})r.   zf[
    {
        "a":"foo",
        "b":"bar"
    },
    {
        "a":"baz",
        "b":"qux"
    }
])rP   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"
    ]
])rR  aa  {
    "schema":{
        "fields":[
            {
                "name":"index",
                "type":"integer"
            },
            {
                "name":"a",
                "type":"string"
            },
            {
                "name":"b",
                "type":"string"
            }
        ],
        "primaryKey":[
            "index"
        ],
        "pandas_version":"1.4.0"
    },
    "data":[
        {
            "index":0,
            "a":"foo",
            "b":"bar"
        },
        {
            "index":1,
            "a":"baz",
            "b":"qux"
        }
    ]
}c                 C   s:   t ddgddggddgd�}|j|dd	�}||ksJ ‚d S )
NrF   rD   rE   rþ   r   r   r   rd   )r5   r‡  râ   r…  r+   r+   r,   Útest_json_indent_all_orientsÙ  s   |z0TestPandasContainer.test_json_indent_all_orientsc                 C   sB   t jtdd�� tƒ jdd� W d   ƒ d S 1 sw   Y  d S )Nzmust be a nonnegative integerr   éÿÿÿÿrˆ  )rz   r{   r$   r	   r%   rM  r+   r+   r,   Ú test_json_negative_indent_raisesY  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	   r9   rÜ   r!   r&   rp  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ÚcolÚ31900441201190696999ÚText)r  Údumpsr	   r   r   r!   r&   )rW   Úencoded_jsonr'   r*   r+   r+   r,   Útest_frame_int_overflowh  s   z+TestPandasContainer.test_frame_int_overflowzdataframe,expectedrà  ©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©Úfuture_stackrP   ro   )Ústackr%   )rW   Ú	dataframer'   ra  r*   r+   r+   r,   Útest_json_multiindexo  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 r/d S t d¡ |d8 }|dks@J dƒ‚q!)Nr‡  rê   )r   rd   rÏ   r˜  zs3://ú/)r&  rC   Tc                 s   s   � | ]}|j V  qd S rG  )r‚  )r=   r÷  r+   r+   r,   Ú	<genexpr>†  s   € z1TestPandasContainer.test_to_s3.<locals>.<genexpr>rû   r   z,Timed out waiting for file to appear on moto)rN   r	   r%   ÚobjectsÚallÚtimeÚsleep)rW   Ús3_public_bucketr(  Úmock_bucket_nameÚtarget_filerk   Ú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   rz   r§   r¨   r¦   r	   r%   )rW   Ú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]ra  rƒ  )TTF)r   r   r   r!   rc  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sJ ‚d S )	NTz
2017-01-20z
2017-01-23rF   rD   rn   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s#J ‚d S )
Nc                   @   s   e Zd Zddd„Zdd„ ZdS )zGTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObjectrF  Nc                 S   s   || _ || _|| _|| _d S rG  ©r   r   Ú_crm   )rW   r   r   r®  rm   r+   r+   r,   rL  ±  s   
zPTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.__init__c                 S   s   dS )NrC   r+   rM  r+   r+   r,   r²   ·  s   zITestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.erO  )rP  rQ  rR  rL  r²   r+   r+   r+   r,   Ú_TestObject°  s    
r¯  r   r   r€   rd   r­  Ú0)r   r   rm   )r   r  rj  r%   )rW   r¯  ra  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 rG  rŒ   rk  r+   r+   r,   Útest_complex_data_tojson¾  s   #z,TestPandasContainer.test_complex_data_tojsonc                 C   s2   d}t dddgid�}|jdd�}||ksJ ‚d S )NzY{"columns":["col1"],"index":[0,1],"data":[[13342205958987758245],[12388075603347835679]]}Úcol1l   ¥:!c„&HI l   v8�$Z_
 )rX   rt   ro   râ   )rW   r'   rk   r*   r+   r+   r,   Útest_json_uint64ä  s
   ÿz$TestPandasContainer.test_json_uint64)rt   r.   r/   rP   r   c           
   
      sJ  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œƒ}|rKtˆ g d¢¡ƒ}tˆ g d¢¡ƒ}nR|dkrittjg d¢tj	d�ƒ}ttjddt
gtj	d�ƒ}n4|dkr‹t  d¡‰ddlm‰  ˆ ˆ g d¢¡ƒ}ˆ ˆ g d¢¡ƒ}ntˆ g d¢¡ƒ}tˆ g d¢¡ƒ}|j|d�}t d|¡� tt|ƒ||d�}	W d   ƒ n1 s½w   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�rddlm‰  t‡ ‡‡fdd„ˆjD ƒƒ‰|dk�rttdƒƒˆ_t |	ˆ¡ d S )NÚpyarrowr   r€   ÚInt64rJ   rê   r~   r   ÚFloat64)r~   rµ   r   )TFNrX  rà  rZ  )r   r   r?   rm   r²   ru  Úgr%  Úpythonr   r   r   ©ÚArrowExtensionArrayro   úmode.string_storage)Údtype_backendr5   TFÚbooleanc                    s$   i | ]}|ˆ ˆj ˆ| d d�ƒ“qS )T©Úfrom_pandas)Úarray)r=   r’  ©r»  r'   Úpar+   r,   r@   ,  s    ÿÿzDTestPandasContainer.test_read_json_dtype_backend.<locals>.<dictcomp>r/   r  )rz   Úimportorskipr	   r   r9   rÚ   r   rÁ  r   Úobject_r   Úpandas.arraysr»  r   r%   rU   Úoption_contextr   r   r   rR   r3   r!   r&   )
rW   Ústring_storager½  r5   rª   rk   Ústring_arrayÚstring_array_naÚoutr*   r+   rÂ  r,   Útest_read_json_dtype_backendî  sh   
øÿ

ÿÿøÿ
þÿ
z0TestPandasContainer.test_read_json_dtype_backend)rt   r.   rP   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 s0w   Y  tdtjdgdd�}|dkrTd
dl
m}	 t|	|j|dd�ƒƒ}t ||¡ d S )Nrµ  r   r€   r¶  rJ   ro   r¼  ra  )r½  r5   rb  r   rº  Tr¿  )rz   rÄ  r   r9   rÚ   r%   rU   rÇ  r   r   rÆ  r»  rÁ  r!   rc  )
rW   rÈ  r½  r5   rÃ  rb   rË  r*   r'   r»  r+   r+   r,   Útest_read_json_nullable_series7  s   
ÿÿz2TestPandasContainer.test_read_json_nullable_seriesc                 C   sD   d}t jt|d�� tddd� W d   ƒ d S 1 sw   Y  d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r   rö   Únumpy)r½  )rz   r{   r$   r   )rW   r)   r+   r+   r,   Útest_invalid_dtype_backendL  s
   ÿ"ÿz.TestPandasContainer.test_invalid_dtype_backend)žrP  rQ  rR  rz   ÚfixturerZ   rc   rl   rs   r§   Úparametrizerw   r}   r   r‰   rŠ   rŽ   r¬   r•   r9   rI   r—   r`   Úintr¡   r«   r¯   r±   rÄ   r¨   ÚAssertionErrorrË   r  rÍ   rÙ   rÛ   rÜ   rÞ   Úskipifr   rç   rì   rõ   rø   rú   r  r#  rE  r]  r`  rg  ri  rl  ro  rr  rs  rv  rw  r|  r~  r   r  r‚  r„  r†  r‰  r‹  r�  r   r  r�  r¥  r«  r­  r®  r¯  r²  rº  r»  rÁ  rÇ  ÚnetworkÚ
single_cpurU   ÚDatetimeTZDtyperÒ  rÜ  râ  ræ  rã  r   rè  rë  rí  rþ  rÿ  r  r  r  r  r  r  r   r"  r#  r%  rå  Úskip_if_not_us_localer)  r0  r2  ÚsysÚmaxsizer8  r9  r:  r<  r  rÚ   rj   rI  rO  rU  rV  r   rc  re  rg  rh  r	   Úrename_axisrl  rq  rs  ru  rv  ry  rz  r  rƒ  Úparamr†  r‹  rŒ  rŽ  r‘  r—  r�  r¨  rª  r«  r¬  r±  r²  r´  rÌ  rÍ  rÏ  r+   r+   r+   r,   r7   `   sÞ   


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

þ



&ýþ

ýþ


ýþ
	

÷þ
0ÿ&	 þ(þ&ÿü(þ þìþ	 (&ÿ öþ	þ	þ
ÿÿýÿýõþþþuþÿþ
	þþþÿüìþ!

ÿFr7   c                  C   sT   t tdƒƒ} |  ¡ }tjtdd�� t|dd� W d   ƒ d S 1 s#w   Y  d S )Nr   zThe engine type foor   rF   )Úengine©r   r3   r%   rz   r{   r$   r   ©rb   rË  r+   r+   r,   Útest_invalid_engineU  s
   "ÿrà  c                  C   sV   t tdƒƒ} |  ¡ }tjtdd�� t|ddd� W d   ƒ d S 1 s$w   Y  d S )Nr   z&currently pyarrow engine only supportsr   rµ  F)rÝ  r   rÞ  rß  r+   r+   r,   Útest_pyarrow_engine_lines_false]  s
   "ÿrá  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 s1w   Y  tddgddggdtddgdd�tdd	gdd�d�}t	 
||¡ d S )Nrµ  r   r   r?   rm   zrow 1zrow 2zcol 1zcol 2rn   zfuture.infer_stringTr¥   rJ   r6  )rz   rÄ  r	   r%   rU   rÇ  r   r   r   r!   r&   )r5   rk   rË  r*   r'   r+   r+   r,   Ú$test_json_roundtrip_string_inferencee  s   
ÿÿürâ  c                  C   sZ   t dg d¢iƒ} d}tjt|d�� tƒ }|  |d¡ W d   ƒ d S 1 s&w   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   rt   )r	   r!   r"   r#   r   r%   )rk   r)   r¹  r+   r+   r,   Útest_json_pos_args_deprecationv  s   ÿ"þrã  rµ  c                  C   sH   t tdtgdd�tdtgdd�dœƒ} | jddd	�}d
}||ks"J ‚d S )Nr   zint64[pyarrow]rJ   r   r¶  r…  r.   Tr;  z"{"a":1,"b":2}
{"a":null,"b":null}
)r	   r   r   r%   )rk   r*   r'   r+   r+   r,   Útest_to_json_ea_null‚  s   þÿrä  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   rP   r   r!   rf  )rX   r*   r'   r+   r+   r,   Útest_read_json_lines_rangeindex’  s   ræ  )5r   r   Údecimalr   r  r   r   r  r  rÙ  r¢  rÎ  r9   rz   Úpandas._configr   Úpandas.compatr   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsrå  ÚpandasrU   r   r	   r
   r   r   r   r   r   r   Úpandas._testingÚ_testingr!   Úpandas.core.arraysr   r   Úpandas.core.arrays.string_arrowr   Úpandas.io.jsonr   r-   r6   r7   rà  rá  râ  rã  Ú
skip_if_norä  ræ  r+   r+   r+   r,   Ú<module>   sZ    ,-                
