a
    nÝEb8 ã                   @   sV  d dl Z d dl mZ d dlmZ d dlmZ d dlZd dlZd dlZd dl	Z
d dlZd dlmZ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 d dlmZ e ¡ ZeeƒZe  ¡ Z!dgd d	gd  d
gd  dge"e!ƒd   Z#ej$e#dd�e!_%e&e'e#ƒƒe!d< e
j(e"e!ƒdd�e!d< dd„ Z)ej* +d¡ej* +d¡G dd„ dƒƒƒZ,dS )é    N)Ú	timedelta)ÚDecimal)ÚStringIO)ÚIS64Úis_platform_windows)Ú	DataFrameÚDatetimeIndexÚSeriesÚ	TimestampÚ	read_jsonZbahé   ÚbarÚbazÚfooé   ÚE©ÚnameÚint64©ÚdtypeÚsortc                 C   sD   |dks|dkr|j dd�}|dkr4tt|jƒƒ|_t | |¡ d S )NÚrecordsÚvaluesT©Údrop)Úreset_indexÚrangeÚlenÚcolumnsÚtmÚassert_frame_equal)ÚresultÚexpectedÚorient© r%   ú`/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/io/json/test_pandas.pyÚassert_json_roundtrip_equal'   s
    r'   zBignore:an integer is required (got type float)*:DeprecationWarningz6ignore:the 'numpy' keyword is deprecated:FutureWarningc                   @   sè  e Zd Zejdd�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¡ej	 
d,dd*g¡d-d.„ ƒƒƒZej	 
d)d*ejg¡ej	 
d+dd*g¡ej	 
d,dd*g¡d/d0„ ƒƒƒZej	 
d)d1ejed2g¡ej	 
d+dd*g¡ej	 
d,dd*g¡d3d4„ ƒƒƒZej	 
d+dd*g¡ej	 
d,dd*g¡d5d6„ ƒƒZej	 
d+dd*g¡ej	 
d,dd*g¡d7d8„ ƒƒZej	 
d+dd*g¡ej	 
d,dd*g¡d9d:„ ƒƒZej	 
d+dd*g¡ej	 
d,dd*g¡d;d<„ ƒƒZej	 
d=d>d?d@ dAg¡dfdBdCg¡dDdE„ ƒZej	 
d)dd*g¡ej	 
d+dd*g¡ej	 
d,dd*g¡dFdG„ ƒƒƒZej	 
d)dd*g¡dHdI„ ƒZ ej	 
dJej!ej"g¡ej	 
d)dd*g¡dKdL„ ƒƒZ#ej	j$e% dMdN�ej	 
dOg dP¢¡dQdR„ ƒƒZ&dSdT„ Z'dUdV„ Z(dWdX„ Z)dYdZ„ Z*d[d\„ Z+d]d^„ Z,d_d`„ Z-dadb„ Z.dcdd„ Z/dedf„ Z0ej	 
d,dd*g¡dgdh„ ƒZ1ej	 
d)d*d1g¡ej	 
d,dd*g¡didj„ ƒƒZ2ej	 
d,dd*g¡dkdl„ ƒZ3ej	 
d,dd*g¡dmdn„ ƒZ4ej	 
d)ejeg¡ej	 
d,dd*g¡dodp„ ƒƒZ5dqdr„ Z6dsdt„ Z7dudv„ Z8ej	 
dwde9dxgdydz�fd*e9d{gƒfg¡d|d}„ ƒZ:d~d„ Z;d€d�„ Z<d‚dƒ„ Z=d„d…„ Z>d†d‡„ Z?dˆd‰„ Z@ej	 
dŠd‹dŒg¡ej	 
d�dd*g¡ej	 
dŽeAjBeAjAeg¡d�d�„ ƒƒƒZCej	 
d‘g d’¢¡d“d”„ ƒZDej	 
d•g d–¢¡d—d˜„ ƒZEd™dš„ ZFej	 
d•g d–¢¡d›dœ„ ƒZGd�dž„ ZHej	 
dŸg d ¢¡d¡d¢„ ƒZId£d¤„ ZJd¥d¦„ ZKd§d¨„ ZLd©dª„ ZMej	jNeOjNej	 
d«d¬ePjQd­d®�gd¯dygd°ePjQd­d®�gg¡d±d²„ ƒƒƒZRd³d´„ ZSdµd¶„ ZTej	 
d�dd*g¡ej	 
dŠdŒd‹g¡ej	 
d·ePjUeVg¡d¸d¹„ ƒƒƒZWdºd»„ ZXd¼d½„ ZYd¾d¿„ ZZdÀdÁ„ Z[dÂdÃ„ Z\dÄdÅ„ Z]dÆdÇ„ Z^ej	 
dÈedÉƒedÊdËd®�edÌƒg¡dÍdÎ„ ƒZ_ej	 
dÏePj`dÐdÑdÒ�ePj`dÓdÑdËdÔ�ePj`dÕdÑdÒ�g¡dÖd×„ ƒZadØdÙ„ ZbecjddÚdÛ„ ƒZedÜdÝ„ ZfdÞdß„ Zgej	 
dàehjid ehjidÑ  g¡dádâ„ ƒZjej	 
dàdãdäg¡dådæ„ ƒZkdçdè„ Zldédê„ Zmej	jndëeodì�dídî„ ƒZpdïdð„ Zqej	 
dd1d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ø„ ƒƒZrdùdú„ Zsej	 
dg dû¢¡düdý„ ƒZtej	 
d)deedþœg¡dÿ�d „ ƒZu�d�d„ Zvej	 
�dewddÑg�d�dggddg�d�ddgddÑg�d�dgg�dœfewddÑg�d�dggddg�d� x�d¡ddgddÑg�d�dgg�dœfewd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e9g �d
¢�d�d��dg �d
¢�dœfe9g �d
¢�d�d� x�d¡�dg �d
¢�dœfe9ddÑg�dddgddgg�d��dddÑg�dœfg¡�d�d„ ƒZyej	 
dewddÑg�d�dggddg�d�ewddÑg�d�dggddg�d� x�d¡ewddÑg�d�dggddgddgddgg�d	�e9g �d
¢�d�d�e9g �d
¢�d�d� x�d¡e9ddÑg�dddgddgg�d�g¡�d�d„ ƒZzej	 
dg �d¢¡�d�d„ ƒZ{ej	 
dd�dg¡ej	 
ddd*g¡�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&ej€d�d'ej	j��d(�ej€�d�d'ej	j��d(�g¡�d)�d*„ ƒZ‚ej	 
�d+g �d,¢¡�d-�d.„ ƒZƒej	 
�d$g �d/¢¡�d0�d1„ ƒZ„�d2�d3„ Z…�d4�d5„ Z†�d6�d7„ Z‡�d8�d9„ Zˆej	 
�d:ewg �d
¢g �d;¢�d<œƒ�d=fg¡�d>�d?„ ƒZ‰�d@�dA„ ZŠ�dB�dC„ Z‹�dD�dE„ ZŒ�dF�dG„ Z��dH�dI„ ZŽej	 
�dJe9�dK�dL�dM�dNœƒ�dOfe9�dP�dQ�dR�dNœƒ�dSfew�dT�dUg�dV�dWggƒ�dXfew�dY�dZg�d[�d\ggƒ�d]fg¡�d^�d_„ ƒZ�d1S (`  ÚTestPandasContainerT)Zautousec                 c   s   t  ¡ | _d V  d S ©N)Ú
_cat_frameÚcopyÚcategorical©Úselfr%   r%   r&   Úsetup4   s    
zTestPandasContainer.setupc                 C   s    t  ¡ }d|_|j d ¡|_|S )NÚts)r    ZmakeTimeSeriesr   ÚindexÚ
_with_freq)r.   Úserr%   r%   r&   Údatetime_series:   s    z#TestPandasContainer.datetime_seriesc                 C   s   t t ¡ ƒ}|j d ¡|_|S r)   )r   r    ZgetTimeSeriesDatar1   r2   ©r.   Údfr%   r%   r&   Údatetime_frameC   s    z"TestPandasContainer.datetime_framec                 C   sN   t ddgddggddgddgd	�}t|j|d
�|d
�}| ¡ }t|||ƒ d S )NÚaÚbÚcÚdz	index " 1z	index / 2za \ bzy / z©r1   r   ©r$   ©r   r   Úto_jsonr+   r'   ©r.   r$   r6   r"   r#   r%   r%   r&   Ú test_frame_double_encoded_labelsK   s    ýz4TestPandasContainer.test_frame_double_encoded_labelsr$   )Úsplitr   r   c                 C   sN   t ddgddggddgddgd�}t|j|d	�|d	�}| ¡ }t|||ƒ d S )
Nr8   r9   r:   r;   é   ÚxÚyr<   r=   r>   r@   r%   r%   r&   Útest_frame_non_unique_indexW   s    "z/TestPandasContainer.test_frame_non_unique_indexr1   r   c                 C   sl   t ddgddggddgddgd�}d	|› d
�}tjt|d�� |j|d� W d   ƒ n1 s^0    Y  d S )Nr8   r9   r:   r;   rC   rD   rE   r<   z+DataFrame index must be unique for orient='ú'©Úmatchr=   ©r   ÚpytestÚraisesÚ
ValueErrorr?   ©r.   r$   r6   Úmsgr%   r%   r&   Ú"test_frame_non_unique_index_raises_   s    "z6TestPandasContainer.test_frame_non_unique_index_raisesrB   r   Údatar8   r9   r:   r;   g      ø?g      @g      @g      @rC   é   Ú20130101Z20130102c                 C   s    t |ddgddgd�}t|j|d�|dgd�}|dkr„t |ƒ}|jd d …df jd	kr�|jd d …df  tj¡d
 |jd d …df< n|dkr�|}t 	||¡ d S )NrC   é   rD   r<   r=   )r$   Úconvert_datesr   r   údatetime64[ns]é@B rB   )
r   r   r?   Úilocr   ÚviewÚnpr   r    r!   )r.   r$   rQ   r6   r"   r#   r%   r%   r&   Útest_frame_non_unique_columnsf   s    ÿ.z1TestPandasContainer.test_frame_non_unique_columns)r1   r   r   c                 C   sl   t ddgddggddgddgd�}d	|› d
�}tjt|d�� |j|d� W d   ƒ n1 s^0    Y  d S )Nr8   r9   r:   r;   rC   rT   rD   r<   z-DataFrame columns must be unique for orient='rG   rH   r=   rJ   rN   r%   r%   r&   Ú$test_frame_non_unique_columns_raisesƒ   s    "z8TestPandasContainer.test_frame_non_unique_columns_raisesc                 C   s   |  ¡ |j dd�ksJ ‚d S )Nr   r=   ©r?   )r.   Úfloat_framer%   r%   r&   Útest_frame_default_orient‹   s    z-TestPandasContainer.test_frame_default_orientr   FÚconvert_axesÚnumpyc           	      C   s2   |j |d�}t|||||d�}|}t|||ƒ d S )Nr=   ©r$   r`   ra   r   )r?   r   r'   )	r.   r$   r`   ra   r   r^   rQ   r"   r#   r%   r%   r&   Útest_roundtrip_simpleŽ   s    
ÿz)TestPandasContainer.test_roundtrip_simplec           	      C   sX   |j |d�}t|||||d�}|}|rHtr0tƒ rH|sH|dkrH| tj¡}t|||ƒ d S )Nr=   rb   rB   )r?   r   r   r   ÚastyperZ   Zint32r'   )	r.   r$   r`   ra   r   Ú	int_framerQ   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�}|r\|dkr\|d	kr\|j tjjd
d�¡ |j	|d�}t
|||||d�}| ¡ }	|s’|	 tj¡}	|rÀ|dv rÀ|	j tj¡|	_|	j tj¡|	_n:|dkrÞ|rÞ|	j tj¡|	_n|rú|d	krú|	j tj¡|	_t||	|ƒ d S )N)éÈ   é   c                 S   s   g | ]}t |ƒ‘qS r%   ©Ústr©Ú.0Úir%   r%   r&   Ú
<listcomp>µ   ó    z?TestPandasContainer.test_roundtrip_str_axes.<locals>.<listcomp>ri   c                 S   s   g | ]}t |ƒ‘qS r%   rj   rl   r%   r%   r&   ro   ¶   rp   rh   )r   r1   r   rg   rB   úCan't decode directly to array©Úreasonr=   rb   r<   r   )r   rZ   Zzerosr   ÚnodeÚ
add_markerrK   ÚmarkÚxfailr?   r   r+   rd   r   r   r1   r'   )
r.   Úrequestr$   r`   ra   r   r6   rQ   r"   r#   r%   r%   r&   Útest_roundtrip_str_axes¯   s2    üÿ
ÿz+TestPandasContainer.test_roundtrip_str_axesc                 C   s²   |dv r&|j  tjjd|› d�d�¡ | jj|d�}|r^|dv r^|j  tjjd|› d�d�¡ t||||d	�}| j ¡ }|j	 
t¡|_	d |j	_|s¢|d
kr¢| ¡ }t|||ƒ d S )Nr<   z.Can't have duplicate index values for orient 'z')rr   r=   )r   r   zOrient z is broken with numpy=True©r$   r`   ra   r1   )rt   ru   rK   rv   rw   r,   r?   r   r+   r1   rd   rk   r   Ú
sort_indexr'   )r.   rx   r$   r`   ra   rQ   r"   r#   r%   r%   r&   Útest_roundtrip_categoricalØ   s$    
ÿÿÿ
z.TestPandasContainer.test_roundtrip_categoricalc                 C   s~   t ƒ }|j|d�}t||||d�}| ¡ }|rJ|j t¡|_|j t¡|_|rn|dkrn|jdgdd�j	dd�}t
 ||¡ d S )	Nr=   rz   r   r   rC   ©ZaxisTr   )r   r?   r   r+   r1   rd   Úfloatr   Úreindexr   r    r!   )r.   r$   r`   ra   Zempty_framerQ   r"   r#   r%   r%   r&   Útest_roundtrip_emptyô   s    z(TestPandasContainer.test_roundtrip_emptyc           	      C   sb   |j |d�}t||||d�}| ¡ }|sR|j tj¡d }|dkrL| t¡}||_t	|||ƒ d S )Nr=   rz   rW   rB   )
r?   r   r+   r1   rY   rZ   r   rd   rk   r'   )	r.   r$   r`   ra   r7   rQ   r"   r#   Úidxr%   r%   r&   Útest_roundtrip_timestamp  s    
z,TestPandasContainer.test_roundtrip_timestampc                 C   sÀ   |r"|dkr"|j  tjjdd�¡ t g d¢¡}g d¢g d¢g d¢g d¢d	œ}t||d
�}|j|d�}t	||||d�}	| 
¡ }
|
jf i |
 d¡ tj¡¤Ž}
|s°|dkr°|
 ¡ }
t|	|
|ƒ d S )NrB   rq   rr   )r8   r9   r:   r;   Úe)ç        ç      ð?ç       @ç      @ç      @)r„   r…   r„   r…   r„   )Zfoo1Zfoo2Zfoo3Zfoo4Zfoo5)TFTFT©ÚAÚBÚCÚD)rQ   r1   r=   rz   Únumberr1   )rt   ru   rK   rv   rw   ÚpdÚIndexr   r?   r   r+   ZassignZselect_dtypesrd   rZ   r   r{   r'   )r.   rx   r$   r`   ra   r1   r   r6   rQ   r"   r#   r%   r%   r&   Útest_roundtrip_mixed  s$    ÿüz(TestPandasContainer.test_roundtrip_mixedz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 columnsrB   )zN{"badkey":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}zunexpected key\(s\): badkeyrB   c                 C   sB   t jt|d��  tt|ƒ|d� W d   ƒ n1 s40    Y  d S )NrH   r=   )rK   rL   rM   r   r   )r.   rQ   rO   r$   r%   r%   r&   Ú$test_frame_from_json_bad_data_raises4  s    #z8TestPandasContainer.test_frame_from_json_bad_data_raisesc                 C   s„   t ddgg d¢gƒ}t|j|d�|||d�}t |jd ¡s@J ‚t ddgg d	¢gƒ}t|j|d�|||d�}t |jd ¡s€J ‚d S )
NrC   rT   ©ri   r   é   r=   )r$   r`   r   ©r   rT   Ú1Ú2)Ú4Ú5Ú6)r   r   r?   rZ   ÚisnanrX   )r.   r$   r`   ra   r   Znum_dfr"   Zobj_dfr%   r%   r&   Ú!test_frame_from_json_missing_dataZ  s     
ü
üz5TestPandasContainer.test_frame_from_json_missing_datac                 C   s(   t d|d�}ttjgƒ}t ||¡ d S )Nz[null]r   )r   r   rZ   Únanr    r!   )r.   r$   r   r"   r#   r%   r%   r&   Ú(test_frame_read_json_dtype_missing_valuep  s    z<TestPandasContainer.test_frame_read_json_dtype_missing_valueÚinfc                 C   sF   t ddgg d¢gƒ}||jd< t| ¡ |d�}t |jd ¡sBJ ‚d S )NrC   rT   r”   r–   r   )r   Úlocr   r?   rZ   rœ   rX   )r.   r$   r    r   r6   r"   r%   r%   r&   Útest_frame_infinityy  s    
z'TestPandasContainer.test_frame_infinityz$not compliant on 32-bit, xref #15865rr   zvalue,precision,expected_val))gffffffî?rC   r…   )g333333ÿ?rC   r†   )g333333ÿ¿rC   g       À)g×£p=
×ï?rT   r…   )g–C‹lçûï?rR   r…   )gûÿÿÿÿÿï?r   r…   c                 C   s2   t d|igƒ}|j|d�}|d|› d�ks.J ‚d S )NZa_float)Zdouble_precisionz{"a_float":{"0":ú}}©r   r?   )r.   ÚvalueÚ	precisionZexpected_valr6   Úencodedr%   r%   r&   Ú"test_frame_to_json_float_precisionƒ  s    z6TestPandasContainer.test_frame_to_json_float_precisionc                 C   sN   t g d¢ƒ}d}tjt|d�� |jdd� W d   ƒ n1 s@0    Y  d S ©N©rC   rT   rR   z+Invalid value 'garbage' for option 'orient'rH   Úgarbager=   rJ   )r.   r6   rO   r%   r%   r&   Útest_frame_to_json_except”  s    z-TestPandasContainer.test_frame_to_json_exceptc                 C   sf   t ddgd�}|jrJ ‚tjt| ¡ t|jƒd�|dd� t dg ig d�jd	d
�}d}||ksbJ ‚d S )NÚjimÚjoe©r   r   F©Úcheck_index_typeÚtest©r1   r   r=   z{"test":{}})r   Ú_is_mixed_typer    r!   r   r?   ÚdictÚdtypes©r.   r6   r"   r#   r%   r%   r&   Útest_frame_emptyš  s    
ÿz$TestPandasContainer.test_frame_emptyc                 C   sP   t ddgd�}|d  d¡|d< |js*J ‚tjt| ¡ t|jƒd�|dd� d S )Nr­   r®   r¯   Úi8r   Fr°   )	r   rd   r´   r    r!   r   r?   rµ   r¶   r5   r%   r%   r&   Útest_frame_empty_mixedtype¥  s    
ÿz.TestPandasContainer.test_frame_empty_mixedtypec                 C   sæ   g d¢g d¢g d¢g d¢g}t |tdƒg d¢d�}|js<J ‚| ¡ }dD ]*}|j|d	�}t||d
d�}t ||¡ qHt 	t
|ƒ¡|_|jdd	�}t|dd
d�}t ||¡ t 	|jd ¡|_|jdd	�}t|dd
d�}t ||¡ d S )N)é
   rC   r   çš™™™™™¹?g{®Gáz„?)é   rT   r   gš™™™™™É?g{®Gáz”?)é   rR   r   g333333Ó?g¸…ëQ¸ž?)é(   ri   Úquxgš™™™™™Ù?g{®Gáz¤?Úabcd)Z1stZ2ndZ3rdZ4thZ5thr<   )rB   r1   r   r=   F©r$   r`   r   rC   r   )r   Úlistr´   r+   r?   r   r    r!   rZ   Úaranger   r1   Úshaper   )r.   Úvalsr6   Úrightr$   ÚinpÚleftr%   r%   r&   Útest_frame_mixedtype_orient®  s,    üÿ
z/TestPandasContainer.test_frame_mixedtype_orientc           
      C   sü   t  dd¡}tt |¡d d�}tg d¢g d¢g d¢g d¢g d¢gg d	¢|d
�}tdƒ|d< tdƒ|jd|j 	d¡f< |d |d< t j
|jd|j 	d¡f< |dddƒ}tj |d¡}t|ƒ}t ||¡ |jdgdd�}tj |d¡}t|ƒ}	t ||	¡ d S )Nz
2000-01-03z
2000-01-07©Úfreq)gÛÃ‰àù?gzÙ~Kcå?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‰   ©r   r1   z19920106 18:21:32.12ÚdaterS   rR   ÚmodifiedrC   ÚioÚjsonrQ   ztsframe_v012.jsonr}   ztsframe_iso_v012.json)r�   Ú
date_ranger   rZ   Zasarrayr   r
   rX   r   Úget_locÚNaTÚosÚpathÚjoinr   r    r!   r   )
r.   ÚdatapathÚdtir6   ÚdirpathZv12_jsonZdf_unserZdf_isoZv12_iso_jsonZdf_unser_isor%   r%   r&   Útest_v12_compatÌ  s0    û÷z#TestPandasContainer.test_v12_compatc                 C   sŽ   t jdddd�}tt|ƒd d�}tg d¢g d¢g d¢g d	¢g d
¢g d¢dœ|d�}|j d¡|_t|jdd�dd�}t	j
||ddddd� d S )NZ20000101r»   ÚH)ÚperiodsrÌ   rË   )
g}S? wí¿gÂôbÍmÇè?gz(~J�	ô?gðô1¼å¬ã?gk*¬ÐMã¿gv�TçjŽÏ?g7j	" YÒ?gp¢+KS(Àgñ’¬�µ£î?gZtÛS¬yð¿)
i¢L,i_�}i4zõiKeáiL&»iÞ%giûÜDiY)L i;ei­Dô )
Z78c608f1Z64a99743Z13d2ff52Zca7f4af2Z97236474Zbde7e214Z1a6bde47Zb1190be5Z7a669144Z8d64d068)
gD!¸€†í¥¿gIxJ ˆðü¿gÛòµ%â
@g�¨PÝ\<è¿gòÐ�÷ÛÞ¿gPl‰…ï—ë?gFàzÚnñ?g5mH/î?gp®Hé%Ÿ¿gáIðö?)
Z14f04af9Zd085da90Z4bcfac83Z81504cafZ2ffef4a9Z08e2f5c4Z07e1af03Zaddbd4a7Z1f6a09baZ4bfc4d87)
i¥/iŽÞØiÑYiÛ6i‚IÀ i;ª>i¶Á	iÒ(¡ i0q{iÑª‰)Zfloat_1Zint_1Zstr_1Zfloat_2Zstr_2Zint_2r³   ÚunicoderB   r=   T)r±   Zcheck_column_typeZ	by_blocksZcheck_exact)r�   rÒ   r   rÃ   r   r   rd   r   r?   r    r!   )r.   r1   Údf_mixedZdf_roundtripr%   r%   r&   Útest_blocks_compat_GH9037ê  s,    ÃJµOúz-TestPandasContainer.test_blocks_compat_GH9037c           
      C   s   G dd„ dƒ}d}||ƒ}t d|jgiƒ}| ¡ d|› d�ksBJ ‚t d|giƒ}d}tjt|d�� | ¡  W d   ƒ n1 s€0    Y  t |gd	gd
œddgd�}tjt|d�� | ¡  W d   ƒ n1 sÐ0    Y  |jtd�}d|› d�}	||	ksþJ ‚|jtd�d|› d�k�sJ ‚d S )Nc                   @   s"   e Zd Zdd„ Zedœdd„ZdS )zFTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThingc                 S   s   || _ t |¡| _d S r)   )ÚhexedÚbytesÚfromhexÚbinary)r.   rá   r%   r%   r&   Ú__init__N  s    zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__)Úreturnc                 S   s   | j S r)   )rá   r-   r%   r%   r&   Ú__str__R  s    zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__N)Ú__name__Ú
__module__Ú__qualname__rå   rk   rç   r%   r%   r%   r&   ÚBinaryThingM  s   rë   Z574b4454ba8c5eb4f98a8f45rŠ   z{"A":{"0":"ú"}}z6Unsupported UTF-8 sequence length when encoding stringrH   rC   ©rŠ   r‹   r‹   r¯   ©Údefault_handlerz"},"B":{"0":1}})r   rá   r?   rK   rL   ÚOverflowErrorrk   )
r.   rë   rá   ZbinthingZdf_printableZdf_nonprintablerO   rß   r"   r#   r%   r%   r&   Útest_frame_nonprintable_bytesJ  s&    &&

ÿÿz1TestPandasContainer.test_frame_nonprintable_bytesc                 C   s<   t dd dgddgiƒ ¡ }ddd › d�}||ks8J ‚d S )Nr   i † rC   r   i9  ú{"z":{"0":1},"foo":{"0":1337}}r¤   ©r.   r"   r#   r%   r%   r&   Útest_label_overflowp  s    z'TestPandasContainer.test_label_overflowc                 C   sš   t ddgddgd�}d}tjt|d�� |jdd� W d   ƒ n1 sH0    Y  t |t|jd	d�d	d
d�¡ t|jdd�dd
d�}t |j	|j	¡ d S )Nr8   r9   rC   r³   z.Series index must be unique for orient='index'rH   r1   r=   rB   Úseries)r$   Útypr   )
r	   rK   rL   rM   r?   r    Úassert_series_equalr   Zassert_numpy_array_equalr   )r.   ÚsrO   Zunserializedr%   r%   r&   Útest_series_non_unique_indexv  s    *ÿÿz0TestPandasContainer.test_series_non_unique_indexc                 C   s   |  ¡ |j dd�ksJ ‚d S ©Nr1   r=   r]   )r.   Ústring_seriesr%   r%   r&   Útest_series_default_orient…  s    z.TestPandasContainer.test_series_default_orientc                 C   sR   |j |d�}t|d||d�}|}|dv r4|jdd�}|dkrBd |_t ||¡ d S ©Nr=   rõ   ©rö   r$   ra   ©r   r   Tr   rB   ©r?   r   r   r   r    r÷   )r.   r$   ra   rû   rQ   r"   r#   r%   r%   r&   Útest_series_roundtrip_simpleˆ  s    z0TestPandasContainer.test_series_roundtrip_simplec                 C   sT   |j |d�}t|d|||d�}|}|dv r6|jdd�}|dkrDd |_t ||¡ d S )Nr=   rõ   )rö   r$   ra   r   rÿ   Tr   rB   r   )r.   r$   ra   r   Zobject_seriesrQ   r"   r#   r%   r%   r&   Útest_series_roundtrip_object•  s    z0TestPandasContainer.test_series_roundtrip_objectc                 C   sd   t g g tjd�}|j|d�}t|d||d�}|}|dv rF|jdd�}n|j t¡|_t	 
||¡ d S )N©r1   r   r=   rõ   rþ   rÿ   Tr   )r	   rZ   Úfloat64r?   r   r   r1   rd   r~   r    r÷   )r.   r$   ra   Zempty_seriesrQ   r"   r#   r%   r%   r&   Útest_series_roundtrip_empty£  s    z/TestPandasContainer.test_series_roundtrip_emptyc                 C   sR   |j |d�}t|d||d�}|}|dv r4|jdd�}|dkrBd |_t ||¡ d S rý   r   )r.   r$   ra   r4   rQ   r"   r#   r%   r%   r&   Ú test_series_roundtrip_timeseries±  s    z4TestPandasContainer.test_series_roundtrip_timeseriesc                 C   s\   t tdƒg d¢d�}|j|d�}t|d||d�}| ¡ }|dv rL|jdd	�}t ||¡ d S )
Nr•   ©r8   r9   r:   r;   rƒ   Úfr³   r=   rõ   rþ   rÿ   Tr   )r	   r   r?   r   r+   r   r    r÷   )r.   r$   ra   r   rø   rQ   r"   r#   r%   r%   r&   Útest_series_roundtrip_numeric¾  s    z1TestPandasContainer.test_series_roundtrip_numericc                 C   sN   t g d¢ƒ}d}tjt|d�� |jdd� W d   ƒ n1 s@0    Y  d S r©   )r	   rK   rL   rM   r?   )r.   rø   rO   r%   r%   r&   Útest_series_to_json_exceptË  s    z.TestPandasContainer.test_series_to_json_exceptc                 C   s2   t g d¢ƒ}t| ¡ ddd�}tj||dd� d S )N©ç=
×£p=@r  r  rõ   T)rö   Úprecise_floatFr°   )r	   r   r?   r    r÷   ©r.   rø   r"   r%   r%   r&   Ú#test_series_from_json_precise_floatÑ  s    z7TestPandasContainer.test_series_from_json_precise_floatc                 C   s>   t g d¢ƒ}t| ¡ dtjd�}t dgd ƒ}t ||¡ d S )Nr  rõ   ©rö   r   ri   rR   )r	   r   r?   rZ   r   r    r÷   )r.   rø   r"   r#   r%   r%   r&   Útest_series_with_dtypeÖ  s    z*TestPandasContainer.test_series_with_dtypezdtype,expectedú
2000-01-01rV   r   l    ,ŸUqc                 C   s4   t dgdd�}| ¡ }t|d|d�}t ||¡ d S )Nr  rV   r   rõ   r  )r	   r?   r   r    r÷   )r.   r   r#   rø   rQ   r"   r%   r%   r&   Útest_series_with_dtype_datetimeÝ  s    z3TestPandasContainer.test_series_with_dtype_datetimec                 C   s4   t g d¢g d¢gƒ}t| ¡ dd�}t ||¡ d S )Nr  T)r  ©r   r   r?   r    r!   ©r.   r6   r"   r%   r%   r&   Ú"test_frame_from_json_precise_floatê  s    z6TestPandasContainer.test_frame_from_json_precise_floatc                 C   s6   t tdƒg d¢dd�}t| ¡ d d�}t ||¡ d S )Nr•   r  r   r  ©rö   )r	   r   r   r?   r    r÷   r  r%   r%   r&   Útest_typï  s    zTestPandasContainer.test_typc                 C   sf   t g d¢g d¢gƒ}t| ¡ ƒ}t ||¡ t g d¢g d¢dœg d¢d�}t| ¡ ƒ}t ||¡ d S )Nrª   r”   ©r8   r9   )rŠ   r‹   rŒ   r³   r  r  r%   r%   r&   Útest_reconstruction_indexõ  s    z-TestPandasContainer.test_reconstruction_indexc                 C   sP   t  d¡�2}|||fD ]}| |¡ t|ƒ qW d   ƒ n1 sB0    Y  d S )Nú	test.json)r    Úensure_cleanr?   r   )r.   r^   re   r7   rÖ   r6   r%   r%   r&   Ú	test_path   s    
zTestPandasContainer.test_pathc                 C   sR   |  ¡ }t|ƒ}t ||¡ |  ¡ }t|dd�}tj||dd� |jd u sNJ ‚d S )Nrõ   r  F)Zcheck_names)r?   r   r    r!   r÷   r   )r.   r4   r7   rÑ   r"   r%   r%   r&   Útest_axis_dates  s    z#TestPandasContainer.test_axis_datesc                 C   s¼   |}t dƒ|d< | ¡ }t|ƒ}t ||¡ d|d< |jdd�}t|dd�}| ¡ }|d j d	¡|d< |d  d
¡|d< t ||¡ t	t dƒ|j
d�}| ¡ }t|dd�}t ||¡ d S )NrS   rÎ   r…   r   Úns©Ú	date_unitF©rU   r¹   r   r³   rõ   r  )r
   r?   r   r    r!   r+   r   rY   rd   r	   r1   r÷   )r.   r4   r7   r6   rÑ   r"   r#   r0   r%   r%   r&   Útest_convert_dates  s     z&TestPandasContainer.test_convert_datesÚdate_formatÚepochÚisoÚ	as_objectÚdate_typc                 C   sl   |dddd�t jg}|r"| d¡ t||d�}|j|d�}|dkrHd}nd	}|r\| d
d¡}||kshJ ‚d S )Niä  rC   )ÚyearÚmonthÚdayr8   r³   ©r$  r%  z+{"1577836800000":1577836800000,"null":null}zC{"2020-01-01T00:00:00.000Z":"2020-01-01T00:00:00.000Z","null":null}Ú}ú	,"a":"a"})r�   rÔ   Úappendr	   r?   Úreplace)r.   r$  r'  r(  rQ   r3   r"   r#   r%   r%   r&   Útest_date_index_and_values,  s    
ÿz.TestPandasContainer.test_date_index_and_valuesÚ
infer_word)Z
trade_timerÎ   ÚdatetimeZsold_atrÏ   Ú	timestampZ
timestampsc                 C   sf   ddl m} dd|diddig}tdtdƒgdtjggd|gd�}t||ƒƒd|g }t ||¡ d S )	Nr   ©ÚdumpsÚidrC   l    $äAÅrT   z
2002-11-08r¯   )	Úpandas.io.jsonr6  r   r
   r�   rÔ   r   r    r!   )r.   r2  r6  rQ   r#   r"   r%   r%   r&   Útest_convert_dates_inferC  s    ÿz,TestPandasContainer.test_convert_dates_inferzdate,date_unit))ú20130101 20:43:42.123N)ú20130101 20:43:42rø   )r:  Úms)z20130101 20:43:42.123456Úus)z20130101 20:43:42.123456789r  c                 C   s¢   |}t |ƒ|d< tj|jd|j d¡f< tj|jd|j d¡f< |rT|jd|d�}n|jdd�}t|ƒ}| ¡ }|j	 
d¡|_	|d j 
d¡|d< t ||¡ d S )NrÎ   rC   r   r&  ©r$  r!  r,  ÚUTC)r
   r�   rÔ   rX   r   rÓ   r?   r   r+   r1   Útz_localizeÚdtr    r!   )r.   rÎ   r!  r7   r6   rÑ   r"   r#   r%   r%   r&   Útest_date_format_frameZ  s    z*TestPandasContainer.test_date_format_framec                 C   sH   |}d}t jt|d�� |jddd� W d   ƒ n1 s:0    Y  d S )Nú*Invalid value 'foo' for option 'date_unit'rH   r&  r   r>  )rK   rL   rM   r?   )r.   r7   r6   rO   r%   r%   r&   Útest_date_format_frame_raisest  s    z1TestPandasContainer.test_date_format_frame_raisesc                 C   sˆ   t t|ƒ|jd�}tj|jd< tj|jd< |r>|jd|d�}n|jdd�}t|dd�}| ¡ }|j 	d	¡|_|j
 	d	¡}t ||¡ d S )
Nr³   rC   r   r&  r>  r,  rõ   r  r?  )r	   r
   r1   r�   rÔ   rX   r?   r   r+   r@  rA  r    r÷   )r.   rÎ   r!  r4   r0   rÑ   r"   r#   r%   r%   r&   Útest_date_format_seriesz  s    z+TestPandasContainer.test_date_format_seriesc                 C   sV   t tdƒ|jd�}d}tjt|d�� |jddd� W d   ƒ n1 sH0    Y  d S )Nr:  r³   rC  rH   r&  r   r>  )r	   r
   r1   rK   rL   rM   r?   )r.   r4   r0   rO   r%   r%   r&   Útest_date_format_series_raises’  s    z2TestPandasContainer.test_date_format_series_raisesÚunit)rø   r<  r=  r  c                 C   s’   |}t dƒ|d< |j d¡}t dƒ|jd|f< t dƒ|jd|f< tj|jd|f< |jd|d	�}t||d
�}t 	||¡ t|d d
�}t 	||¡ d S )Nr;  rÎ   z19710101 20:43:42rC   z21460101 20:43:42rT   ri   r%  r>  r   )
r
   r   rÓ   rX   r�   rÔ   r?   r   r    r!   )r.   rG  r7   r6   ÚdlrÑ   r"   r%   r%   r&   Útest_date_unit˜  s    z"TestPandasContainer.test_date_unitc                 C   s   d}t |ƒ d S )Nad  {
        "status": "success",
        "data": {
        "posts": [
            {
            "id": 1,
            "title": "A blog post",
            "body": "Some useful content"
            },
            {
            "id": 2,
            "title": "Another blog post",
            "body": "More content"
            }
           ]
          }
        })r   )r.   rø   r%   r%   r&   Útest_weird_nested_json«  s    z*TestPandasContainer.test_weird_nested_jsonc                 C   sx   t tj dd¡tdƒd�}tdƒ|d< tdƒ|d< d|d	< tjddd
�|_	| 
¡ }t|tjtjdœd�}t ||¡ d S )Nr   rT   ZABr¯   rS   rÎ   ÚintsTÚbools©rÝ   )rK  rL  r   )r   rZ   ÚrandomÚrandnrÃ   r
   r   r�   rÒ   r1   r?   r   r   Zbool_r    r!   )r.   Zdfj2rÑ   r"   r%   r%   r&   Útest_doc_exampleÁ  s    z$TestPandasContainer.test_doc_examplec                 C   sž   t ddd�}tddgddggddgd�}d	}tjt|d
��  tj||dd� W d   ƒ n1 s`0    Y  t dƒ}tddgddggddgd�}t ||¡ d S )Nz#[{"a": 1, "b": 2}, {"b":2, "a" :1}]T©ra   rC   rT   r8   r9   r¯   z´DataFrame\.index are different

DataFrame\.index values are different \(100\.0 %\)
\[left\]:  Index\(\['a', 'b'\], dtype='object'\)
\[right\]: RangeIndex\(start=0, stop=2, step=1\)rH   Fr°   )r   r   rK   rL   ÚAssertionErrorr    r!   )r.   r"   r#   Ú	error_msgr%   r%   r&   Útest_misc_exampleÌ  s    .z%TestPandasContainer.test_misc_examplec                 C   sF   |ddddƒ}t  |¡}| ¡ }t|ƒ}t |j|j|jd�|¡ d S )NrÐ   rÑ   rQ   z	teams.csvr<   )	r�   Zread_csvr?   r   r    r!   r   r1   r   )r.   rØ   rÖ   r6   rø   r"   r%   r%   r&   Útest_round_trip_exception_Þ  s
    
z.TestPandasContainer.test_round_trip_exception_zfield,dtypeZ
created_atr?  ©ÚtzZ	closed_atZ
updated_atc                 C   s&   d}t |dd�}|| j|ks"J ‚d S )Nz@https://api.github.com/repos/pandas-dev/pandas/issues?per_page=5Tr"  )r   r   )r.   Úfieldr   Úurlr"   r%   r%   r&   Útest_urlæ  s    zTestPandasContainer.test_urlc                 C   sV  dd„ }t tdƒtdd�gƒ}|jdks,J ‚t| ¡ dd� |¡}t ||¡ t tdƒtdd�gt 	d	d
g¡d�}|jdks€J ‚t| ¡ dd� |¡}t ||¡ t
tdƒtdd�gƒ}|d	 jdksÊJ ‚t |t| ¡ ƒ |¡¡ t
tdd�tdd�gd
dgtjddd�dœƒ}t|jdd�ƒ}tj|jdd�|d< t |j¡|d< t ||¡ d S )Nc                 S   s   t j| dd�S )Nr<  ©rG  )r�   Úto_timedelta)rD   r%   r%   r&   Ú<lambda>ö  rp   z4TestPandasContainer.test_timedelta.<locals>.<lambda>é   r   )Úsecondsztimedelta64[ns]rõ   r  r   rC   r³   ©ÚdaysrT   rS   )ÚstartrÝ   ©r8   r9   r:   r  r   r[  r8   r:   )r	   r   r   r   r?   Úapplyr    r÷   r�   r�   r   r!   rÒ   r\  r8   Úto_datetimer:   )r.   Ú	converterrø   r"   Úframer%   r%   r&   Útest_timedeltaõ  s,    $ýÿz"TestPandasContainer.test_timedeltac                 C   sr   t dtdƒtdƒgitd�}t dt |jd ¡jt|jd ƒjgiƒ}t|j	dd�dd	id�}t
j||d
d� d S )Nr8   r^  rS   r   r   rC   r  r   r   Fr°   )r   r   r
   Úobjectr�   Ú	Timedeltar8   r¥   r   r?   r    r!   )r.   rg  r#   r"   r%   r%   r&   Útest_mixed_timedelta_datetime  s    $ÿz1TestPandasContainer.test_mixed_timedelta_datetimeÚtimedelta_typc                 C   sp   |dd�|dd�t jg}|r&| d¡ t||d�}|dkr@d}nd}|rT| d	d
¡}|j|d�}||kslJ ‚d S )NrC   r`  rT   r8   r³   r&  zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}r-  r.  r,  )r�   rÔ   r/  r	   r0  r?   )r.   r'  r$  rl  rQ   r3   r#   r"   r%   r%   r&   Útest_timedelta_to_json  s    
ÿz*TestPandasContainer.test_timedelta_to_jsonc                 C   sN   t ƒ }tdd|giƒ}tddt|ƒgiƒ}t|jtd�ƒ}tj||dd� d S )Nr8   é   rî   Fr°   )ri  r   rk   r   r?   r    r!   )r.   r¥   rg  r#   r"   r%   r%   r&   Útest_default_handler4  s
    z(TestPandasContainer.test_default_handlerc                 C   sb   ddl m} dd„ }dtddtdd	ƒgtd
ƒd dgdœddgd�g}d}|||dd�|ks^J ‚d S )Nr   r5  c                 S   s(   t | tƒr dd| jfd| jfgS t| ƒS )N)ZmathjsÚComplexÚreZim)Ú
isinstanceÚcomplexÚrealÚimagrk   ©Úobjr%   r%   r&   Údefault>  s    
zBTestPandasContainer.test_default_handler_indirect.<locals>.defaulté	   rC   ZSTRri   éûÿÿÿrž   zN/Ar  r8   r9   r¯   zR[9,[[1,null],["STR",null],[[["mathjs","Complex"],["re",4.0],["im",-5.0]],"N\/A"]]]r   ©rï   r$   )r8  r6  r   rs  r~   )r.   r6  rx  Zdf_listr#   r%   r%   r&   Útest_default_handler_indirect;  s    þþÿz1TestPandasContainer.test_default_handler_indirectc                 C   sP   t ddtddƒgtdƒd tddƒgdœd	d
gd�}d}|jtdd�|ksLJ ‚d S )NrC   gffffff@ri   rz  rž   g333333ó?r   r  r8   r9   r¯   zE[["(1+0j)","(nan+0j)"],["(2.3+0j)","(nan+0j)"],["(4-5j)","(1.2+0j)"]]r   r{  )r   rs  r~   r?   rk   )r.   r6   r#   r%   r%   r&   Ú,test_default_handler_numpy_unsupported_dtypeP  s    $þÿz@TestPandasContainer.test_default_handler_numpy_unsupported_dtypec                    s¬   d‰ ‡ fdd„}t jtˆ d��, tdddtƒ giƒj|d� W d   ƒ n1 sP0    Y  t jtˆ d��0 tdddtd	d
ƒgiƒj|d� W d   ƒ n1 sž0    Y  d S )NZraisinc                    s   t ˆ ƒ‚d S r)   )Ú	TypeErrorrv  ©rO   r%   r&   Úmy_handler_raises`  s    zJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raisesrH   r8   rC   rT   rî   ri   rz  )rK   rL   r~  r   ri  r?   rs  )r.   r€  r%   r  r&   Útest_default_handler_raises]  s    ÿ$ÿz/TestPandasContainer.test_default_handler_raisesc                 C   sn   t dg d¢iƒ}|d |d< | ¡ }|d  d¡|d< || ¡ ksFJ ‚|d }|d }| ¡ | ¡ ksjJ ‚d S )NrŠ   )r8   r9   r:   r8   r9   r9   r8   r‹   Úcategory)r   r?   rd   )r.   r6   r#   rø   Úscr%   r%   r&   Útest_categoricall  s    z$TestPandasContainer.test_categoricalc                 C   sˆ   t jdddd�}| d¡ d ¡}t|t jddd�dœƒ}| ¡ }||d< | ¡ }|| ¡ ks`J ‚t|ƒ}t|ƒ}| ¡ | ¡ ks„J ‚d S )	NrS   rR   ú
US/Eastern©rÝ   rW  ÚutcrM  rí   rŠ   )r�   rÒ   Z
tz_convertr@  r   r+   r?   r	   )r.   Útz_rangeZtz_naiver6   Zdf_naiver#   ZstzZs_naiver%   r%   r&   Útest_datetime_tzy  s    z$TestPandasContainer.test_datetime_tzc                 C   sŠ   t tj dd¡ƒ}tj|jd d…< | d¡}| ¡ }|| ¡ ksDJ ‚ttj d¡ƒ}tj|jd d…< | d¡}| ¡ }|| ¡ ks†J ‚d S )Nr»   ri   é   ZSparse)	r   rZ   rN  rO  rž   r¡   rd   r?   r	   )r.   r6   Zsdfr#   rø   Ússr%   r%   r&   Útest_sparse‰  s    

zTestPandasContainer.test_sparser0   z2013-01-10 05:00:00Zz2013-01-10 00:00:00r…  z2013-01-10 00:00:00-0500c                 C   sD   ddl m} d}||dd�|ks$J ‚| ¡ }||dd�|ks@J ‚d S )Nr   r5  z"2013-01-10T05:00:00.000Z"T©Z	iso_dates)r8  r6  Zto_pydatetime)r.   r0   r6  ÚexprA  r%   r%   r&   Útest_tz_is_utc™  s
    	z"TestPandasContainer.test_tz_is_utcrˆ  z2013-01-01 05:00:00ZrT   rM  z2013-01-01 00:00:00r†  z2013-01-01 00:00:00-0500c                 C   sl   ddl m} d}d}||dd�|ks(J ‚t|ƒ}||dd�|ksDJ ‚td|iƒ}||dd�}||kshJ ‚d S )Nr   r5  z7["2013-01-01T05:00:00.000Z","2013-01-02T05:00:00.000Z"]zF{"DT":{"0":"2013-01-01T05:00:00.000Z","1":"2013-01-02T05:00:00.000Z"}}Tr�  ZDT)r8  r6  r   r   )r.   rˆ  r6  rŽ  ZdfexprÙ   r6   r"   r%   r%   r&   Útest_tz_range_is_utcª  s    	ÿz(TestPandasContainer.test_tz_range_is_utcc                 C   s8   t ddd�}tddgddggddgd�}t ||¡ d S )	Nú!{"a": 1, "b": 2}
{"b":2, "a" :1}
T©ÚlinesrC   rT   r8   r9   r¯   ©r   r   r    r!   ró   r%   r%   r&   Útest_read_inline_jsonlÃ  s    z*TestPandasContainer.test_read_inline_jsonlc                 C   s:   t dd|d�}tddgddggddgd�}t ||¡ d S )	Nzs3n://pandas-test/items.jsonlT)r“  Ústorage_optionsrC   rT   r8   r9   r¯   r”  )r.   Ús3_resourceÚs3sor"   r#   r%   r%   r&   Útest_read_s3_jsonlÉ  s
    ÿz&TestPandasContainer.test_read_s3_jsonlc              	   C   s–   t  d¡�x}t|dƒ�}| d¡ W d   ƒ n1 s60    Y  t|dd�}tddgddggdd	gd
�}t  ||¡ W d   ƒ n1 sˆ0    Y  d S )Nztmp_items.jsonÚwr‘  Tr’  rC   rT   r8   r9   r¯   )r    r  ÚopenÚwriter   r   r!   )r.   rÖ   Úinfiler"   r#   r%   r%   r&   Útest_read_local_jsonlÓ  s    (z)TestPandasContainer.test_read_local_jsonlc                 C   s|   d}t |ƒ}t|dd�}tddgddggddgd	�}t ||¡ d}t|dd�}tddgddggddgd	�}t ||¡ d S )
Nu5   {"a": "fooâ€�", "b": "bar"}
{"a": "foo", "b": "bar"}
Tr’  u   fooâ€�r   r   r8   r9   r¯   )r   r   r   r    r!   ©r.   rÑ   r"   r#   r%   r%   r&   Útest_read_jsonl_unicode_charsÜ  s    z1TestPandasContainer.test_read_jsonl_unicode_charsÚbigNumc                 C   sp   t |tdgd�}| ¡ }dt|ƒ d }||ks4J ‚t|tdgdgd�}| ¡ }dt|ƒ d }||kslJ ‚d S )	NÚ	articleId)r   r1   ú{"articleId":r-  r   )r   r1   r   ú{"0":{"articleId":r£   )r	   ri  r?   rk   r   )r.   r¡  rõ   rÑ   r#   r6   r%   r%   r&   Útest_to_json_large_numbersí  s    z.TestPandasContainer.test_to_json_large_numberslûÿÿÿ        l            c                 C   sœ   t dt|ƒ d ƒ}d}tjt|d�� t|ƒ W d   ƒ n1 sD0    Y  t dt|ƒ d ƒ}tjt|d�� t|ƒ W d   ƒ n1 sŽ0    Y  d S )Nr£  r-  z#Value is too small|Value is too bigrH   r¤  r£   )r   rk   rK   rL   rM   r   )r.   r¡  rÑ   rO   r%   r%   r&   Útest_read_json_large_numbersú  s    &z0TestPandasContainer.test_read_json_large_numbersc                 C   sh   d}t |ƒ}t|dd�}tddgd�}t ||¡ d}t |ƒ}t|ƒ}tddgdgd	�}t ||¡ d S )
Nz'{"articleId": "1404366058080022500245"}rõ   r  gg“_SDr¢  r³   z.{"0": {"articleId": "1404366058080022500245"}}r   r<   )r   r   r	   r    r÷   r   r!   rŸ  r%   r%   r&   Útest_read_json_large_numbers2  s    z1TestPandasContainer.test_read_json_large_numbers2c                 C   sÚ   t ddgddggddgd�}|jddd�}d	}||ks:J ‚t d
dgddggddgd�}|jddd�}d}||kstJ ‚t t|dd�|¡ t ddgddggddgd�}|jddd�}d}||ksÂJ ‚t t|dd�|¡ d S )NrC   rT   r8   r9   r¯   r   T)r$   r“  z{"a":1,"b":2}
{"a":1,"b":2}
zfoo}r   zfoo"z/{"a":"foo}","b":"bar"}
{"a":"foo\"","b":"bar"}
r’  zfoo\za\z4{"a\\":"foo\\","b":"bar"}
{"a\\":"foo\"","b":"bar"}
)r   r?   r    r!   r   r·   r%   r%   r&   Útest_to_jsonl  s    z!TestPandasContainer.test_to_jsonlz%GH#13774 encoding kwarg not supported)rs   rL   c                 C   s¤   g d¢g d¢g d¢g d¢g d¢g d¢g d¢t jdd	d
gdt jdd	d
gg	}dd„ |D ƒ}g }dtfD ] }|D ]}| t||d�¡ qjqbddd„}|D ]}||ƒ q’d S )N)ó   EÉ, 17rp   ó   aó   bó   c)r©  rª  r«  r¬  )s   EE, 17rp   rª  r«  r¬  )r©  ó   øürª  r«  r¬  )rp   rª  r«  r¬  )r­  rª  r«  r¬  )ó   Aøürp   rª  r«  r¬  rp   r«  r¬  r®  c                 S   s   g | ]}d d„ |D ƒ‘qS )c                 S   s$   g | ]}t |tƒr| d ¡n|‘qS )úlatin-1)rr  râ   Údecode)rm   rD   r%   r%   r&   ro   9  rp   zFTestPandasContainer.test_latin_encoding.<locals>.<listcomp>.<listcomp>r%   )rm   rE   r%   r%   r&   ro   8  s   ÿz;TestPandasContainer.test_latin_encoding.<locals>.<listcomp>r‚  r   r¯  c                 S   sX   t  d¡�:}| j||d� t||d�}t j| |dd� W d   ƒ n1 sJ0    Y  d S )Nr  )ÚencodingF)Zcheck_categorical)r    r  r?   r   r÷   )rø   r±  rÖ   Zretrr%   r%   r&   Ú	roundtripB  s    z:TestPandasContainer.test_latin_encoding.<locals>.roundtrip)r¯  )rZ   rž   ri  r/  r	   )r.   r   Zexamplesr   Úvalr²  rø   r%   r%   r&   Útest_latin_encoding)  s(    ÷þ
z'TestPandasContainer.test_latin_encodingc                 C   sN   t dtdƒgiƒ}|jddd� ¡ }| ¡  |jddd� ¡ }||ksJJ ‚d S )Nr8   rC   T)r1   Údeep)r   rk   Zmemory_usageÚsumr?   )r.   r6   Zsize_beforeZ
size_afterr%   r%   r&   Ú"test_data_frame_size_after_to_jsonK  s
    z6TestPandasContainer.test_data_frame_size_after_to_jsonr…   r†   r—   r˜   ú1.ú2.c                 C   sB   t ddgddgg||d�}|jdd�}t|dd�}t ||¡ d S )NrC   rT   rR   ri   r<   Útabler=   ©r   r?   r   r    r!   )r.   r1   r   r#   Údfjsonr"   r%   r%   r&   Ú.test_from_json_to_json_table_index_and_columnsU  s    zBTestPandasContainer.test_from_json_to_json_table_index_and_columnsc                 C   sD   t ddgddgddgdœƒ}|jdd	�}t|dd	�}t ||¡ d S )
NrC   rT   r‡   rˆ   rš   r›   rc  rº  r=   r»  )r.   r#   r¼  r"   r%   r%   r&   Ú#test_from_json_to_json_table_dtypes`  s    z7TestPandasContainer.test_from_json_to_json_table_dtypes)rB   r   r1   r   c                 C   s˜   t  tg d¢dd�tg d¢dd�tg d¢dd�tg d¢d	d�tg d
¢dd�tg d¢dd�dœ¡}|j|d�}t||dddd	dddœd�}t ||¡ d S )Nrª   r   r   )Nr†   r‡   r  )NÚ r:   ri  )TFTÚbool)r8   r9   Nr‚  )z
2020-01-01Nz
2020-01-03rV   )ÚIntegerÚFloatZObjectZBoolZCategoryZDatetimer=   ©r$   r   )r   Ú	from_dictr	   r?   r   r    r!   )r.   r$   r#   r¼  r"   r%   r%   r&   Ú%test_to_json_from_json_columns_dtypesg  s0    ÿúÿúýz9TestPandasContainer.test_to_json_from_json_columns_dtypes)r9   r:   c                 C   sl   t ddgddgddgdœƒ}|jdd	�}d
}tjt|d�� t|d|d� W d   ƒ n1 s^0    Y  d S )NrC   rT   r‡   rˆ   rš   r›   rc  rº  r=   z)cannot pass both dtype and orient='table'rH   rÃ  ©r   r?   rK   rL   rM   r   )r.   r   r6   r¼  rO   r%   r%   r&   Ú!test_read_json_table_dtype_raises…  s
    z5TestPandasContainer.test_read_json_table_dtype_raisesc                 C   sr   t ddgddggddgddgd	�}|jd
d�}d}tjt|d�� t|d
dd� W d   ƒ n1 sd0    Y  d S )NrC   rT   rR   ri   r…   r†   r¸  r¹  r<   rº  r=   z0cannot pass both convert_axes and orient='table'rH   TrÂ   rÆ  )r.   r6   r¼  rO   r%   r%   r&   Ú(test_read_json_table_convert_axes_raisesŽ  s
    "z<TestPandasContainer.test_read_json_table_convert_axes_raiseszdata, expectedri   r   r¯   )r   rQ   r   rÍ   rª   rŠ   r   )r   rQ   )r   r1   c                 C   s(   |j ddd�}t |¡}||ks$J ‚d S )NrB   F©r$   r1   )r?   rÑ   Úloads©r.   rQ   r#   r"   r%   r%   r&   Útest_index_false_to_json_split–  s     
z2TestPandasContainer.test_index_false_to_json_splitc                 C   sL   |j ddd�}t |¡}tjjj|dd�t|ƒjdd�dœ}||ksHJ ‚d S )Nrº  FrÉ  r³   r   r=   )ZschemarQ   )r?   rÑ   rÊ  r�   rÐ   Zbuild_table_schemar   Úto_dict©r.   rQ   r"   r#   r%   r%   r&   Útest_index_false_to_json_table»  s    
þz2TestPandasContainer.test_index_false_to_json_table)r   r1   r   r   c                 C   s`   t ddgddggddgd�}d}tjt|d	�� |j|d
d� W d   ƒ n1 sR0    Y  d S )NrC   rT   ri   r   r8   r9   r¯   z?'index=False' is only valid when 'orient' is 'split' or 'table'rH   FrÉ  rJ   rN   r%   r%   r&   Útest_index_false_error_to_jsonØ  s    z2TestPandasContainer.test_index_false_error_to_jsonrº  c                 C   s@   t ddgddgdœƒ}|j||d�}t||d�}t ||¡ d S )NrC   rT   rR   ri   r  rÉ  r=   r»  )r.   r$   r1   r#   r¼  r"   r%   r%   r&   Ú"test_index_false_from_json_to_jsonã  s    z6TestPandasContainer.test_index_false_from_json_to_jsonc                 C   s6   t dddd�}tdgtdgdd�d	�}t ||¡ d S )
Nz{"2019-01-01T11:00:00.000Z":88}rõ   r1   )rö   r$   éX   z2019-01-01 11:00:00r?  rV  r³   )r   r	   r   r    r÷   ró   r%   r%   r&   Útest_read_timezone_informationí  s
    ÿz2TestPandasContainer.test_read_timezone_informationrY  )zs3://example-fsspec/zgcs://another-fsspec/file.jsonzhttps://example-site.com/datazsome-protocol://data.txtc                 C   s.   t d|› d�ƒ}td|giƒ}t ||¡ d S )Nz{"url":{"0":"rì   rY  r”  )r.   rY  r"   r#   r%   r%   r&   Útest_read_json_with_url_valueõ  s    z1TestPandasContainer.test_read_json_with_url_valuezdate_format,key)r%  i \&)r&  Z
P1DT0H0M0Sc                 C   s@   t dggt d¡gd�}d|› d�}|j|d�}||ks<J ‚d S )NrC   Z1Dr¯   rò   z
":{"0":1}}r,  )r   r�   rj  r?   )r.   r$  Úkeyr6   r#   r"   r%   r%   r&   Útest_timedelta_as_label  s    z+TestPandasContainer.test_timedelta_as_labelzorient,expected)r1   z{"('a', 'b')":{"('c', 'd')":1}})r   z{"('c', 'd')":{"('a', 'b')":1}}r¿  )Zmarksc                 C   s2   t dggdgdgd�}|j|d�}||ks.J ‚d S )NrC   r  )r:   r;   r<   r=   r¤   ©r.   r$   r#   r6   r"   r%   r%   r&   Útest_tuple_labels  s    z%TestPandasContainer.test_tuple_labelsÚindent)rC   rT   ri   c                 C   s†   t ddgddggddgd�}|j|d�}d	| }d
|› d|› |› d|› |› d|› d|› d|› |› d|› |› d|› d�}||ks‚J ‚d S )Nr   r   r   rÀ   r8   r9   r¯   ©rÙ  ú z{
z"a":{
z"0":"foo",
z
"1":"baz"
z},
z"b":{
z"0":"bar",
z
"1":"qux"
z}
}r¤   )r.   rÙ  r6   r"   Úspacesr#   r%   r%   r&   Útest_to_json_indent  s:    ÿÿÿÿÿÿÿÿÿÿÿÿz'TestPandasContainer.test_to_json_indent))rB   zã{
    "columns":[
        "a",
        "b"
    ],
    "index":[
        0,
        1
    ],
    "data":[
        [
            "foo",
            "bar"
        ],
        [
            "baz",
            "qux"
        ]
    ]
})r   zf[
    {
        "a":"foo",
        "b":"bar"
    },
    {
        "a":"baz",
        "b":"qux"
    }
])r1   zn{
    "0":{
        "a":"foo",
        "b":"bar"
    },
    "1":{
        "a":"baz",
        "b":"qux"
    }
})r   zn{
    "a":{
        "0":"foo",
        "1":"baz"
    },
    "b":{
        "0":"bar",
        "1":"qux"
    }
})r   zV[
    [
        "foo",
        "bar"
    ],
    [
        "baz",
        "qux"
    ]
])rº  aa  {
    "schema":{
        "fields":[
            {
                "name":"index",
                "type":"integer"
            },
            {
                "name":"a",
                "type":"string"
            },
            {
                "name":"b",
                "type":"string"
            }
        ],
        "primaryKey":[
            "index"
        ],
        "pandas_version":"1.4.0"
    },
    "data":[
        {
            "index":0,
            "a":"foo",
            "b":"bar"
        },
        {
            "index":1,
            "a":"baz",
            "b":"qux"
        }
    ]
}c                 C   s:   t ddgddggddgd�}|j|dd	�}||ks6J ‚d S )
Nr   r   r   rÀ   r8   r9   r¯   ri   )r$   rÙ  r¤   r×  r%   r%   r&   Útest_json_indent_all_orients3  s    wz0TestPandasContainer.test_json_indent_all_orientsc                 C   s@   t jtdd�� tƒ jdd� W d   ƒ n1 s20    Y  d S )Nzmust be a nonnegative integerrH   éÿÿÿÿrÚ  )rK   rL   rM   r   r?   r-   r%   r%   r&   Ú test_json_negative_indent_raises®  s    z4TestPandasContainer.test_json_negative_indent_raisesc                 C   s:   d}t |ƒ}tdtjdtjdtj dgƒ}t ||¡ d S )Nz?["a", NaN, "NaN", Infinity, "Infinity", -Infinity, "-Infinity"]r8   ÚNaNÚInfinityz	-Infinity)r   r   rZ   rž   r    r    r!   rÎ  r%   r%   r&   Útest_emca_262_nan_inf_support²  s    ÿz1TestPandasContainer.test_emca_262_nan_inf_supportc                 C   sV   t g d¢ƒ}t t¡�, t| ¡ dd�}t ||¡ W d   ƒ n1 sH0    Y  d S )Nrª   TrQ  )r   r    Zassert_produces_warningÚFutureWarningr   r?   r!   )r.   r#   r"   r%   r%   r&   Ú'test_deprecate_numpy_argument_read_json»  s    z;TestPandasContainer.test_deprecate_numpy_argument_read_jsonc                 C   s>   t  ddiddig¡}tdddgiƒ}t|ƒ}t ||¡ d S )NÚcolZ31900441201190696999ÚText)rÑ   r6  r   r   r    r!   )r.   Zencoded_jsonr#   r"   r%   r%   r&   Útest_frame_int_overflowÂ  s    z+TestPandasContainer.test_frame_int_overflowzdataframe,expectedrc  ©rD   rE   zU{"(0, 'x')":1,"(0, 'y')":"a","(1, 'x')":2,"(1, 'y')":"b","(2, 'x')":3,"(2, 'y')":"c"}c                 C   s$   |  ¡ }|jdd�}||ks J ‚d S rú   )Ústackr?   )r.   Z	dataframer#   rõ   r"   r%   r%   r&   Útest_json_multiindexÉ  s    z(TestPandasContainer.test_json_multiindexc                 C   sŒ   dd l }d\}}tg d¢g d¢dœƒ}|jd|› d|› �|d� d	}|d
d„ | d¡j ¡ D ƒv rdqˆ| d¡ |d8 }|dksDJ dƒ‚qDd S )Nr   )úpandas-testr  rª   )rT   ri   r•   ré  zs3://ú/)r–  r   c                 s   s   | ]}|j V  qd S r)   )rÕ  )rm   rw  r%   r%   r&   Ú	<genexpr>á  s   z1TestPandasContainer.test_to_s3.<locals>.<genexpr>rì  r¼   z,Timed out waiting for file to appear on moto)Útimer   r?   ZBucketÚobjectsÚallÚsleep)r.   r—  r˜  rï  Zmock_bucket_nameZtarget_filer6   Útimeoutr%   r%   r&   Ú
test_to_s3Ø  s    ÿ
zTestPandasContainer.test_to_s3c                 C   sD   t |tƒr$tjjdd�}|j |¡ t|ggƒ ¡ }|dks@J ‚d S )Nznot implementedrr   z{"0":{"0":null}})	rr  r   rK   rv   rw   rt   ru   r   r?   )r.   Znulls_fixturerx   rv   r"   r%   r%   r&   Útest_json_pandas_nullsé  s
    
z*TestPandasContainer.test_json_pandas_nullsc                 C   s(   t ddd�}tg d¢ƒ}t ||¡ d S )Nz[true, true, false]rõ   r  )TTF)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� ¡ }| ¡ }d}||ks6J ‚d S )NTz
2017-01-20z
2017-01-23r   r   r<   a‰  {"(Timestamp('2017-01-20 00:00:00'), 'foo')":true,"(Timestamp('2017-01-20 00:00:00'), 'bar')":true,"(Timestamp('2017-01-21 00:00:00'), 'foo')":true,"(Timestamp('2017-01-21 00:00:00'), 'bar')":true,"(Timestamp('2017-01-22 00:00:00'), 'foo')":true,"(Timestamp('2017-01-22 00:00:00'), 'bar')":true,"(Timestamp('2017-01-23 00:00:00'), 'foo')":true,"(Timestamp('2017-01-23 00:00:00'), 'bar')":true})r   r�   rÒ   rê  r?   r·   r%   r%   r&   Útest_to_json_multiindex_escapeø  s    
ý
ÿ
z2TestPandasContainer.test_to_json_multiindex_escapec                 C   sJ   G dd„ dƒ}t |ddddd�gƒ}t | ¡ ¡ddddd	œiksFJ ‚d S )
Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )zGTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObjectc                 S   s   || _ || _|| _|| _d S r)   ©r8   r9   Ú_cr;   )r.   r8   r9   rù  r;   r%   r%   r&   rå     s    zPTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.__init__c                 S   s   dS )Nr   r%   r-   r%   r%   r&   rƒ     s    zITestPandasContainer.test_to_json_series_of_objects.<locals>._TestObject.eN)rè   ré   rê   rå   rƒ   r%   r%   r%   r&   Ú_TestObject  s   rú  rC   rT   rR   ri   rø  Ú0)r8   r9   r;   )r	   rÑ   rÊ  r?   )r.   rú  rõ   r%   r%   r&   Útest_to_json_series_of_objects  s    z2TestPandasContainer.test_to_json_series_of_objectszdata,expectedy      À       @y              ð?y      "@      À)r   rC   rT   zW{"0":{"imag":8.0,"real":-6.0},"1":{"imag":1.0,"real":0.0},"2":{"imag":-5.0,"real":9.0}}yHáz®Ç"À…ëQ¸å?yš™™™™™@¤p=
×£"@y…ëQ¸@Ãõ(\�ÂÅ¿z]{"0":{"imag":0.66,"real":-9.39},"1":{"imag":9.32,"real":3.95},"2":{"imag":-0.17,"real":4.03}}y       À      @y      ð¿        y      @      Ày              $Àz‚{"0":{"0":{"imag":3.0,"real":-2.0},"1":{"imag":-3.0,"real":4.0}},"1":{"0":{"imag":0.0,"real":-1.0},"1":{"imag":-10.0,"real":0.0}}}yìQ¸…ëÑ¿Ãõ(\�ÂÕ?yHáz®Gñ¿ö(\�ÂõØ¿y=
×£p=Ú?Ãõ(\�ÂÕ¿yö(\�Âõè¿š™™™™™õ¿z‹{"0":{"0":{"imag":0.34,"real":-0.28},"1":{"imag":-0.34,"real":0.41}},"1":{"0":{"imag":-0.39,"real":-1.08},"1":{"imag":-1.35,"real":-0.78}}}c                 C   s   |  ¡ }||ksJ ‚d S r)   r]   rË  r%   r%   r&   Útest_complex_data_tojson  s    #z,TestPandasContainer.test_complex_data_tojson)�rè   ré   rê   rK   Zfixturer/   r4   r7   rA   rv   ZparametrizerF   rP   r
   r[   r\   r_   r~   rc   rZ   r   rf   r  Úintry   r|   r€   r‚   r‘   r×   r“   r�   rŸ   r    ZNINFr¢   Zskipifr   r¨   r¬   r¸   rº   rÊ   rÛ   rà   rñ   rô   rù   rü   r  r  r  r  r	  r
  r  r  r	   r  r  r  r  r  r  r#  r3  rÎ   r1  r9  rB  rD  rE  rF  rI  rJ  rP  rT  rU  Únetworkr    r�   ZDatetimeTZDtyperZ  rh  rk  rj  r   rm  ro  r|  r}  r�  r„  r‰  rŒ  r�  rÒ   r�  r•  ÚtdZskip_if_not_us_localer™  rž  r   ÚsysÚmaxsizer¥  r¦  r§  r¨  rw   r~  r´  r·  r½  r¾  rÅ  rÇ  rÈ  r   Zrename_axisrÌ  rÏ  rÐ  rÑ  rÓ  rÔ  rÖ  ÚparamÚskiprØ  rÝ  rÞ  rà  rã  rå  rè  rë  rô  rõ  rö  r÷  rü  rý  r%   r%   r%   r&   r(   /   sl  





üþ	

&ÿÿ÷éþ"

þ	`&


þþ
þ
þ

þ


ýþ	
ýþ
	ýþ

		


!
$ÿ
 þ(þ&ÿü(þ þìþ	 (&ÿ öþ
þ	ÿúþþu	þÿþ
	þþþÿüìþ!r(   )-r3  r   Údecimalr   rÐ   r   rÑ   rÕ   r  ra   rZ   rK   Zpandas.compatr   r   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr   Zpandasr�   r   r   r	   r
   r   Zpandas._testingZ_testingr    ZgetSeriesDataZ_seriesdZ_framer+   r*   r   ÚcatZCategoricalIndexr1   rÃ   ÚreversedrÄ   r'   rv   Úfilterwarningsr(   r%   r%   r%   r&   Ú<module>   s4   0ÿ
