o
    Û­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�� 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(   ú]/var/www/html/CropPilot/venv/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_equalS   s
   r3   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>ÚABCDÚbahé   ÚbarÚbazÚfooé   ÚEr5   Úint64©ÚdtypeÚsort©Úname©Úindex)Ú	enumerateÚlistÚreversedr6   Úaranger	   ÚpdÚ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š™™™™™ñ?é
   rG   ú
2020-01-01©ÚperiodsÚts)rM   rK   )r   r6   rQ   Úfloat64r   rM   Ú
_with_freq)rT   Ú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   )r5   é   r>   ú
2000-01-01r5   ÚB©r[   Úfreq©r   rM   )
r	   r6   r7   r8   r9   r   rO   r   rM   r^   )rT   Ú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©rM   r   ©r2   ©r	   r   r"   r   Úcopyr3   ©rT   r2   rg   rU   r'   r$   r(   r(   r)   Ú test_frame_double_encoded_labels   s   ýz4TestPandasContainer.test_frame_double_encoded_labelsr2   )Ú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<   ri   r   ÚxÚyrj   rk   rl   rn   r(   r(   r)   Útest_frame_non_unique_index‹   s
   "z/TestPandasContainer.test_frame_non_unique_indexrM   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<   ri   r   rq   rr   rj   z+DataFrame index must be unique for orient='ú'r   rk   ©r	   ÚpytestÚraisesr!   r"   ©rT   r2   rg   r&   r(   r(   r)   Ú"test_frame_non_unique_index_raises”   s
   ""ÿz6TestPandasContainer.test_frame_non_unique_index_raisesrp   r,   rU   r   r   r<   ri   ç      ø?ç      @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   rq   rj   rk   )r2   Úconvert_datesr,   r   údatetime64[ns]é@B rp   zx.1)r	   r   r   r"   ÚilocrH   ÚisetitemÚastyper6   rF   r   r   r#   )rT   r2   rU   rg   r'   r$   r(   r(   r)   Útest_frame_non_unique_columns›   s   ÿ&€
z1TestPandasContainer.test_frame_non_unique_columns)rM   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<   ri   r   r   rq   rj   z-DataFrame columns must be unique for orient='rt   r   rk   ru   rx   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   rk   ©r"   )rT   Úfloat_framer(   r(   r)   Útest_frame_default_orientÁ   ó   z-TestPandasContainer.test_frame_default_orientrH   FÚconvert_axesTc                 C   ó4   t |j|d�ƒ}t||||d�}|}t|||ƒ d S ©Nrk   ©r2   rŒ   rH   ©r   r"   r   r3   )rT   r2   rŒ   rH   r‰   rU   r'   r$   r(   r(   r)   Útest_roundtrip_simpleÄ   s   z)TestPandasContainer.test_roundtrip_simplec                 C   r�   rŽ   r�   )rT   r2   rŒ   rH   Ú	int_framerU   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)éÈ   ra   c                 S   ó   g | ]}t |ƒ‘qS r(   ©Ústr©r:   r;   r(   r(   r)   Ú
<listcomp>Û   ó    z?TestPandasContainer.test_roundtrip_str_axes.<locals>.<listcomp>ra   c                 S   r–   r(   r—   r™   r(   r(   r)   rš   Ü   r›   r•   )r   rM   rH   rk   r�   rj   r+   rp   )r	   r6   Úzerosr0   r   r"   r   rm   r„   rF   r   rM   r3   )rT   r2   rŒ   rH   rg   rU   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 )Nrj   z.Can't have duplicate index values for orient 'z')©Úreasonrk   ©r2   rŒ   r˜   )Úapplymarkerrv   ÚmarkÚxfailr   r"   r   rm   rM   r„   r˜   rK   r3   )	rT   Úrequestr2   rW   rŒ   Úusing_infer_stringrU   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 )Nrk   r    rp   rG   rj   )
r	   r   r"   r   r   ÚfloatÚobjectrm   r   r#   )rT   r2   rŒ   Úempty_framerU   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 )Nrk   r    r�   rp   )r   r"   r   rm   rM   Úviewr6   rF   r„   r˜   r3   )rT   r2   rŒ   rh   rU   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<   ri   Úe)ç        ç      ð?ç       @ç      @ç      @)r¯   r°   r¯   r°   r¯   )Úfoo1Úfoo2Úfoo3Úfoo4Úfoo5)TFTFT©ÚArc   ÚCÚD)rU   rM   rk   r    Únumberr(   )r   r	   r   r"   r   rm   ÚassignÚselect_dtypesr„   r6   rF   r3   )	rT   r2   rŒ   rM   r,   rg   rU   r'   r$   r(   r(   r)   Útest_roundtrip_mixed,  s   üz(TestPandasContainer.test_roundtrip_mixedz9#50456 Column multiindex is stored and loaded differently)rŸ   rw   Ú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|   ra   r   rp   rk   )	r	   rR   Ú
MultiIndexÚfrom_arraysr   r"   r   r   r#   )rT   r   rg   rU   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 columnsrp   )zN{"badkey":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}zunexpected key\(s\): badkeyrp   c                 C   sD   t jt|d�� tt|ƒ|d� W d   ƒ d S 1 sw   Y  d S )Nr   rk   )rv   rw   r!   r   r   )rT   rU   r&   r2   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 ¡s"J ‚t ddgg d	¢gƒ}tt|j|d�ƒ|||d�}t |jd ¡sDJ ‚d S )
Nr   r   ©ra   r@   é   rk   r�   ©r   r   Ú1Ú2)Ú4Ú5Ú6)r	   r   r   r"   r6   Úisnanr‚   )rT   r2   rŒ   rH   Ú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]rG   )r   r   r	   r6   Únanr   r#   )rT   rH   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Ì   rG   )r	   Úlocr   r"   r   r6   rÒ   r‚   )rT   rØ   rH   rg   rU   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ûÿÿÿÿÿï?rD   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"   )rT   ÚvalueÚ	precisionÚexpected_valrg   Ú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   Úgarbagerk   ru   )rT   rg   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   rG   F©Úcheck_index_type)	r	   Ú_is_mixed_typer   r"   r   ÚdictÚdtypesr   r#   )rT   rg   rU   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ÚtestrL   r   rk   z{"test":{}}rÞ   ©rT   rg   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   Úi8rG   Frì   )
r	   r„   rî   r"   r   r#   r   r   rï   rð   )rT   rg   rU   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)rX   r   rC   çš™™™™™¹?g{®Gáz„?)é   r   rA   gš™™™™™É?g{®Gáz”?)r5   r|   rB   g333333Ó?g¸…ëQ¸ž?)é(   ra   Úquxgš™™™™™Ù?g{®Gáz¤?Úabcd)Ú1stÚ2ndÚ3rdÚ4thÚ5thrj   ©rp   rM   r   rk   Fr    r+   r   r,   )r	   rO   rî   rm   r   r"   r   r   r#   r   r1   rM   Úshaper   )rT   Úvalsrg   Úrightr2   Ú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©re   )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¹   rf   z19920106 18:21:32.12ÚnsÚdater}   r|   Úmodifiedr   ÚioÚjsonrU   ztsframe_v012.json)Úaxisztsframe_iso_v012.jsonF©Úcheck_column_type)r   r
   r6   Úasarrayr	   r   Úas_unitr‚   r   Úget_locrR   ÚNaTÚosÚpathÚjoinr   r   r#   r.   )
rT   ÚdatapathÚdtirg   Ú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Ú20000101rX   Úhrd   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_2rL   r˜   rp   rk   T)rí   r  Ú	by_blocksÚcheck_exact)r   r
   rO   r	   r   r„   r6   Ústr_r   r"   r   r   r#   )rT   r¥   rM   Údf_mixedrU   Ú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)rT   rE  r(   r(   r)   Ú__init__z  s   zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__c                 S   s   | j S rD  )rE  ©rT   r(   r(   r)   Ú__str__~  s   zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__©rC  N)Ú__name__Ú
__module__Ú__qualname__rI  r˜   rK  r(   r(   r(   r)   ÚBinaryThingy  s    
rP  Ú574b4454ba8c5eb4f98a8f45rº   z{"A":{"0":"ú"}}z6Unsupported UTF-8 sequence length when encoding stringr   r   ©rº   rc   rc   r   ©Údefault_handlerz"},"B":{"0":1}})r	   rE  r"   rv   rw   ÚOverflowErrorr˜   )
rT   rP  rE  ÚbinthingÚdf_printableÚ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sJ ‚d S )NrA   i † r   rC   i9  ú{"z":{"0":1},"foo":{"0":1337}}rÞ   ©rT   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   rL   z.Series index must be unique for orient='index'r   rM   rk   rp   Úseries)r2   Útypr+   )r   rv   rw   r!   r"   r   Úassert_series_equalr   r   Úassert_equalr,   )rT   Úsr&   Úunserializedr(   r(   r)   Útest_series_non_unique_index¢  s   ÿÿþÿz0TestPandasContainer.test_series_non_unique_indexc                 C   r‡   )NrM   rk   rˆ   )rT   Ú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 )
Nrk   r^  ©r_  r2   r  r˜   ©r,   r+   Tr-   rp   )	r   r"   r   rM   r„   r/   rK   r   r`  )rT   r2   re  r¥   rU   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 r|jdd�}|dkr#d |_tƒ r+| d¡}t ||¡ d S )	Nrk   r^  )r_  r2   rH   rh  Tr-   rp   r˜   )	r   r"   r   r/   rK   r   r„   r   r`  )rT   r2   rH   Úobject_seriesrU   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©rM   rH   rk   r^  rg  Tr-   rp   )r   r6   r]   r   r"   r   r/   rM   r„   r   r`  )rT   r2   Úempty_seriesrU   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 )Nrk   r^  rg  rh  Tr-   rp   )r   r"   r   r/   rK   r   r`  )rT   r2   r`   rU   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<   ri   r®   ÚfrL   rk   r^  rg  rh  Tr-   )	r   r0   r   r"   r   rm   r/   r   r`  )rT   r2   rH   rb  rU   r'   r$   r(   r(   r)   Útest_series_roundtrip_numericí  s   z1TestPandasContainer.test_series_roundtrip_numericc                 C   rä   rå   )r   rv   rw   r!   r"   )rT   rb  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=@ru  ru  r^  T)r_  Úprecise_floatFrì   )r   r   r   r"   r   r`  ©rT   rb  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 )Nrt  r^  ©r_  rH   ra   r|   )r   r   r   r"   r6   rF   r   r`  )rT   rb  r'   r$   r(   r(   r)   Útest_series_with_dtype  s   z*TestPandasContainer.test_series_with_dtypezdtype,expectedrb   r€   rG   l    ,ŸUqc                 C   s8   t dgdd�}t| ¡ ƒ}t|d|d�}t ||¡ d S )Nrb   r€   rG   r^  ry  )r   r   r"   r   r   r`  )rT   rH   r$   rb  rU   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 )Nrt  T)rv  ©r	   r   r   r"   r   r#   ©rT   rg   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Ë   rp  rF   rl  ©r_  )r   r0   r   r   r"   r   r`  rw  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º   rc   r»   rL   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   )rT   r‰   r’   rh   r  rg   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 )Nr^  r  F)Úcheck_names)r   r"   r   r   r#   r`  rK   )rT   r`   rh   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 )Nr}   r	  r
  r°   rC   ©Ú	date_unitF©r   rõ   rF   rL   r^  r  )r   r  r   r"   r   r   r#   rm   r,   r¬   r„   r   rM   r`  )rT   r`   rh   rg   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   rL   ©rŒ  r�  z+{"1577836800000":1577836800000,"null":null}zA{"2020-01-01T00:00:00.000":"2020-01-01T00:00:00.000","null":null}Ú}ú	,"a":"a"})rR   r  Úappendr   r"   Úreplace)rT   rŒ  r�  r�  rU   r_   r'   r$   r(   r(   r)   Útest_date_index_and_valuesU  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   rR   r  r   r   r   r   r#   )rT   rš  rU   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:42rb  )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   r@   rŽ  ©rŒ  r‰  r”  )r   r  rR   r  r‚   r   r  r"   r   r   rm   r   r#   )rT   r
  r‰  rh   rg   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Ž  rC   r¦  )rv   rw   r!   r"   )rT   rh   rg   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	  rL   r   r@   rŽ  r¦  r”  r^  r  )r   r   r  rM   rR   r  r‚   r"   r   r   rm   r   r`  )rT   r
  r‰  r`   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¢  rL   r¨  r   rŽ  rC   r¦  )r   r   rM   rv   rw   r!   r"   )rT   r`   r\   r&   r(   r(   r)   Útest_date_format_series_raises¹  s
   "ÿz2TestPandasContainer.test_date_format_series_raisesÚunit)rb  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   ra   r�  r¦  rˆ  )r   r  r   r  r‚   rR   r  r"   r   r   r   r#   )rT   r¬  rh   rg   Údlr  r'   r(   r(   r)   Útest_date_unit¿  s   z"TestPandasContainer.test_date_unit)rb  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[ú]rG   z2022-01-01T11:22:33.123456©rH   rM   )r
  Údate_objrŽ  r¦  r   r
  r±  rŠ  F)rí   Úcheck_dtype)r
   r6   Ú
datetime64r	   r   r¨   r   r"   Úseekr   r#   r   )rT   r¬  rM   rg   Ú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   )rT   rb  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   ÚABr   r}   r
  r@   ÚintsTÚboolsrZ   )r¹  rº  rG   )r	   r6   r7   r8   r9   rO   r   r0   r   rM   r   r"   r   rF   Úbool_r   r#   )rT   Ú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  rU   z	teams.csvrj   z.The 'downcast' keyword in fillna is deprecatedr   F)Údowncast)rR   Úread_csvr"   r   r   ÚreindexrM   r   r   r   r    Úfillnar6   rÖ   r#   )rT   r  r  rg   rb  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   ÚurlrH   )rT   ÚfieldrH   Ú
httpserverrU   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¬  )rR   Úto_timedelta)rq   r(   r(   r)   Ú<lambda>9  s    z4TestPandasContainer.test_timedelta.<locals>.<lambda>é   r@   ©Úsecondsztimedelta64[ns]r^  r  r   r   rL   )r   r   rH   r   r   r"   Úapplyr   r`  r   r	   r#   )rT   Ú	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 )NrÒ  ©Údaysr@   rÓ  r   r   r}   )Ústartr[   ©r   r   r<   r	  rˆ  rÏ  r   r<   )r	   r   r   r   r"   r   rR   rÐ  r   Úto_datetimer<   r   r#   )rT   r×  rU   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 )
NrÒ  r}   r   rG   r	  rˆ  rF   Frì   )r   r   r	   r¨   rR   Ú	Timedeltar  Ú_valuer   r"   r   r   r#   )rT   Útdr\   r×  r$   rU   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}|r*| d	d
¡}|j|d�}||ks6J ‚d S )Nr   rÙ  r   r   rL   rŽ  zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}r•  r–  r”  )rR   r  r—  r   r˜  r"   )rT   r�  rŒ  rã  rU   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é*   )ÚmillisecondsrL   z	{"42":42})r   r„   r¨   r"   )rT   r�  rã  rU   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   é   rT  Frì   )r¨   r	   r˜   r   r   r"   r   r#   )rT   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   ÚSTRra   éûÿÿÿrÖ   zN/Ar�  r   r   r   zR[9,[[1,null],["STR",null],[[["mathjs","Complex"],["re",4.0],["im",-5.0]],"N\/A"]]]r,   ©rU  r2   )r	   rï  r§   r   )rT   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@ra   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˜   )rT   rg   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 ˆ ƒ‚rD  )Ú	TypeErrorrò  ©r&   r(   r)   Úmy_handler_raisesµ  s   zJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raisesr   r   r   r   rT  ra   r÷  )rv   rw   rý  r	   r¨   r"   rï  )rT   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   rc   Úcategory)r	   r"   r„   )rT   rg   r$   rb  Ú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Æ  ÚutcrZ   rS  rº   )r   Ú
tz_convertÚtz_localizer	   rm   r"   r   )rT   Útz_rangeÚtz_naiverg   Ú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   )rX   ra   é   ÚSparserX   )
r	   r6   r7   r8   r9   rÖ   rÙ   r„   r"   r   )rT   rg   Úsdfr$   rb  Ú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©rT   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   rZ   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„   r¨   r	   )rT   r	  r  Údfexpr  rg   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   rZ   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	   )rT   r  r  r  rg   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   rK   r	   r   r#   )rT   Ú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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#   )rT   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â€�rA   rC   r   r   r   )r   r   r	   r   r#   ©rT   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sJ ‚t|tdgdgd�}| ¡ }dt|ƒ d }||ks6J ‚d S )	NÚ	articleIdr°  ú{"articleId":r•  r   ©rH   rM   r   ú{"0":{"articleId":rÝ   )r   r¨   r"   r˜   r	   )rT   r/  r^  r  r$   rg   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 )Nr1  r•  z#Value is too small|Value is too bigr   r3  rÝ   )r   r˜   rv   rw   r!   r   )rT   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“_SDr0  rL   z.{"0": {"articleId": "1404366058080022500245"}}r   rj   )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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©r2   r   z{"a":1,"b":2}
{"a":1,"b":2}
zfoo}rA   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<  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   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î  rF  Údecode)r:   rq   r(   r(   r)   rš   ­  s   $ z;TestPandasContainer.test_latin_encoding.<locals>.<listcomp>rG   rA  rƒ  r'  F)Úcheck_categorical)r   r   r„  r"   r   r   r`  )rT   rH   r9  r_   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)rM   Údeep)r	   r˜   Úmemory_usageÚsumr"   )rT   rg   Ú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|   ra   rj   Útablerk   ©r	   r"   r   r   r   r#   )rT   rM   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Ü  rN  rk   rO  )rT   r$   rP  r'   r(   r(   r)   Ú#test_from_json_to_json_table_dtypesÌ  s   z7TestPandasContainer.test_from_json_to_json_table_dtypeszincorrect na conversion)rp   r+   rM   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æ   rF   rG   )Nr±   r²   r]   )NÚ r<   r¨   ©TFTÚbool©r   r   Nr  )rY   Nz
2020-01-03r€   )ÚIntegerÚFloatÚObjectÚBoolÚCategoryÚDatetimerk   ©r2   rH   )r	   Ú	from_dictr   r"   r   r   r   r#   )rT   r2   r$   rP  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Ü  rN  rk   z)cannot pass both dtype and orient='table'r   r]  ©r	   r"   rv   rw   r!   r   )rT   rH   rg   rP  r&   r(   r(   r)   Ú!test_read_json_table_dtype_raisesõ  s   "ÿz5TestPandasContainer.test_read_json_table_dtype_raises)rM   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_equalrM   r   )rT   r2   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|   ra   r°   r±   rL  rM  rj   rN  rk   z0cannot pass both convert_axes and orient='table'r   Tr    r`  )rT   rg   rP  r&   r(   r(   r)   Ú(test_read_json_table_convert_axes_raises  s   ""ÿz<TestPandasContainer.test_read_json_table_convert_axes_raiseszdata, expectedra   r@   r   )r   rU   rC   rf   ræ   rº   rJ   )rK   rU   )rK   rM   c                 C   s(   |j ddd�}t |¡}||ksJ ‚d S )Nrp   F©r2   rM   )r"   r  Úloads©rT   rU   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 )NrN  Fre  rL   r+   rk   )ÚschemarU   )r"   r  rf  rR   r  Úbuild_table_schemar	   Úto_dict©rT   rU   r'   r$   r(   r(   r)   Útest_index_false_to_json_table4  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   ra   r@   r   r   r   zU'index=False' is only valid when 'orient' is 'split', 'table', 'records', or 'values'r   Fre  ru   rx   r(   r(   r)   Útest_index_false_error_to_jsonQ  ó   ÿ"ÿz2TestPandasContainer.test_index_false_error_to_jsonr+   c                 C   rn  )Nr   r   ra   r@   r   r   r   zS'index=True' is only valid when 'orient' is 'split', 'table', 'index', or 'columns'r   Tre  ru   rx   r(   r(   r)   Útest_index_true_error_to_json_  rp  z1TestPandasContainer.test_index_true_error_to_jsonrN  c                 C   sD   t ddgddgdœƒ}|j||d�}tt|ƒ|d�}t ||¡ d S )Nr   r   r|   ra   r�  re  rk   rO  )rT   r2   rM   r$   rP  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^  rM   rg  z2019-01-01 11:00:00zM8[ns, UTC]rG   éX   rL   )r   r   r
   r   r   r`  )rT   r'   Úexp_dtir$   r(   r(   r)   Útest_read_timezone_informationw  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":"rR  rË  r   )rT   rË  r'   r$   r(   r(   r)   Útest_read_json_with_url_value€  s   z1TestPandasContainer.test_read_json_with_url_valueÚcompression)rS  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   )rv   rw   ÚFileNotFoundErrorr   )rT   rw  Ú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	   rR   rß  r"   )rT   rŒ  Úkeyrg   r$   r'   r(   r(   r)   Útest_timedelta_as_label�  s   z+TestPandasContainer.test_timedelta_as_labelzorient,expected)rM   z{"('a', 'b')":{"('c', 'd')":1}})r   z{"('c', 'd')":{"('a', 'b')":1}}rS  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<   ri   rj   rk   rÞ   ©rT   r2   r$   rg   r'   r(   r(   r)   Útest_tuple_labels§  s   z%TestPandasContainer.test_tuple_labelsÚindent)r   r   ra   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 )NrC   rA   rB   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Þ   )rT   rƒ  rg   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))rp   zã{
    "columns":[
        "a",
        "b"
    ],
    "index":[
        0,
        1
    ],
    "data":[
        [
            "foo",
            "bar"
        ],
        [
            "baz",
            "qux"
        ]
    ]
})r+   zf[
    {
        "a":"foo",
        "b":"bar"
    },
    {
        "a":"baz",
        "b":"qux"
    }
])rM   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"
    ]
])rN  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 )
NrC   rA   rB   rú   r   r   r   ra   )r2   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„  )rv   rw   r!   r	   r"   rJ  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	   r6   rØ   r   r#   rl  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#   )rT   Úencoded_jsonr$   r'   r(   r(   r)   Útest_frame_int_overflowf  s   z+TestPandasContainer.test_frame_int_overflowzdataframe,expectedrÜ  ©rq   rr   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_stackrM   rk   )Ústackr"   )rT   Ú	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 r/d S t d¡ |d8 }|dks@J dƒ‚q!)Nrƒ  ræ   )r   ra   rË   r”  zs3://ú/)r"  r@   Tc                 s   s   � | ]}|j V  qd S rD  )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)rK   r	   r"   ÚobjectsÚallÚtimeÚsleep)rT   Ús3_public_bucketr$  Úmock_bucket_nameÚtarget_filerg   Ú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   rv   r¢   r£   r¡   r	   r"   )rT   Ú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sJ ‚d S )	NTz
2017-01-20z
2017-01-23rC   rA   rj   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>._TestObjectrC  Nc                 S   s   || _ || _|| _|| _d S rD  ©r   r   Ú_cri   )rT   r   r   rª  ri   r(   r(   r)   rI  ¯  s   
zPTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.__init__c                 S   s   dS )Nr@   r(   rJ  r(   r(   r)   r®   µ  s   zITestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.erL  )rM  rN  rO  rI  r®   r(   r(   r(   r)   Ú_TestObject®  s    
r«  r   r   r|   ra   r©  Ú0)r   r   ri   )r   r  rf  r"   )rT   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 rD  rˆ   rg  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_
 )rU   rp   rk   rÞ   )rT   r$   rg   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 sQw   Y  |dkrgt	 
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   r|   ÚInt64rG   ræ   rz   r{   ÚFloat64)rz   r±   r{   )TFNrT  rÜ  rV  )r   r   r<   ri   r®   rq  Úgr"  rk   úmode.string_storage)Údtype_backendr2   ÚpyarrowTFÚbooleanr   ©ÚArrowExtensionArrayc                    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  r  )r	   r   r6   rÖ   r"   rR   Úoption_contextr   r   rv   ÚimportorskipÚ
ArrowDtypeÚstringÚStringDtyper   Úpandas.arraysrº  r   rO   r0   r   r#   )	rT   Ústring_storager¶  r2   r¥   rg   Úoutr'   Ústring_dtyper(   r¾  r)   Útest_read_json_dtype_backendì  sV   øÿ
ÿÿ

øÿ
þÿz0TestPandasContainer.test_read_json_dtype_backend)rp   r+   rM   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²  rG   rk   rµ  r^  )r¶  r2   r_  r   r¹  Tr»  )rv   rÁ  r   r6   rÖ   r"   rR   rÀ  r   r   rÅ  rº  r½  r   r`  )
rT   rÆ  r¶  r2   r¿  r_   rÇ  r'   r$   rº  r(   r(   r)   Útest_read_json_nullable_series)  s   
ÿÿz2TestPandasContainer.test_read_json_nullable_seriesc                 C   sD   d}t jt|d�� tddd� W d   ƒ d S 1 sw   Y  d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r   rò   Únumpy)r¶  )rv   rw   r!   r   )rT   r&   r(   r(   r)   Útest_invalid_dtype_backend>  s
   ÿ"ÿz.TestPandasContainer.test_invalid_dtype_backend)žrM  rN  rO  rv   ÚfixturerW   r`   rh   ro   r¢   Úparametrizers   ry   r   r…   r†   rŠ   r§   r‘   r6   rF   r“   r]   Úintr�   r¦   r«   r­   rÀ   r£   ÚAssertionErrorrÇ   r  rÉ   rÕ   r×   rØ   rÚ   Úskipifr   rã   rè   rñ   rô   rö   r  r   rB  rZ  r]  rd  rf  ri  rk  rn  ro  rr  rs  rx  rz  r   r{  r~  r€  r‚  r…  r‡  r‹  rœ  r
  r™  r¡  r§  r©  rª  r«  r®  r¶  r·  r½  rÃ  ÚnetworkÚ
single_cpurR   Ú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%  r,  r.  ÚsysÚmaxsizer4  r5  r6  r8  rý  rÖ   r¨   rE  rK  rQ  rR  r   r_  ra  rc  rd  r	   Úrename_axisrh  rm  ro  rq  rr  ru  rv  r{  r  Úparamr‚  r‡  rˆ  rŠ  r�  r“  r™  r¤  r¦  r§  r¨  r­  r®  r°  rÉ  rÊ  rÌ  r(   r(   r(   r)   r4   [   sÚ   


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

þ



&ýþ

ýþ


ýþ
	

÷þ
0ÿ&	 þ(þ&ÿü(þ þìþ	 (&ÿ öþ	þ	þ
ÿÿýÿýõþþþuþÿþ
	þþþÿüìþ!
<r4   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   rC   )Úengine©r   r0   r"   rv   rw   r!   r   ©r_   rÇ  r(   r(   r)   Útest_invalid_engineG  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_falseO  s
   "ÿrÞ  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 s,w   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<   ri   zrow 1zrow 2zcol 1zcol 2rj   zfuture.infer_stringT)Úna_valuerG   r2  )r	   r"   rR   rÀ  r   r   rÄ  r6   rÖ   r   r   r#   )r2   rg   rÇ  r'   rH   r$   r(   r(   r)   Ú$test_json_roundtrip_string_inferenceW  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   rp   )r	   r   r   r    r   r"   )rg   r&   rµ  r(   r(   r)   Útest_json_pos_args_deprecationh  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]rG   r   r²  r�  r+   Tr7  z"{"a":1,"b":2}
{"a":null,"b":null}
)r	   r   r   r"   )rg   r'   r$   r(   r(   r)   Útest_to_json_ea_nullt  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   rM   r   r   rb  )rU   r'   r$   r(   r(   r)   Útest_read_json_lines_rangeindex„  s   rä  )0rœ  r   Údecimalr   r  r   r   r  r  rÖ  rž  rË  r6   rv   Úpandas._configr   Úpandas.compatr   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsrá  ÚpandasrR   r   r	   r
   r   r   r   r   r   r   Úpandas._testingÚ_testingr   Úpandas.io.jsonr   r*   r3   r4   rÝ  rÞ  rà  rá  Ú
skip_if_norâ  rä  r(   r(   r(   r)   Ú<module>   sT    ,-               {
