U
    ¾mœdÛ ã                   @   sè   d dl Z d dl mZ d dlmZ d dlmZ d dlZd dlZd dlZd dl	Z	d dl
Zd dlZd dlmZ d dlm  mZ d dlZd dlmZmZmZmZmZmZ d dlmZ d dlmZm Z  dd	„ Z!G d
d„ dƒZ"dd„ Z#dd„ Z$dS )é    N)Ú	timedelta)ÚDecimal)ÚStringIO)ÚIS64)ÚNAÚ	DataFrameÚDatetimeIndexÚSeriesÚ	TimestampÚ	read_json)ÚArrowStringArrayÚStringArrayc                 C   s<   |dkr|j dd�}|dkr,tt|jƒƒ|_t | |¡ d S )N)ÚrecordsÚvaluesT©Údropr   )Úreset_indexÚrangeÚlenÚcolumnsÚtmÚassert_frame_equal)ÚresultÚexpectedÚorient© r   úY/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/io/json/test_pandas.pyÚassert_json_roundtrip_equal    s
    r   c                   @   s„  e Zd Zejdd„ ƒZejdd„ ƒZejdd„ ƒZdd„ Zej	 
d	d
ddg¡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	dddg¡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d/g¡ej	 
d(d)d'g¡d0d1„ ƒƒZej	 
d(d)d'g¡d2d3„ ƒZej	 
d(d)d'g¡d4d5„ ƒZej	 
d(d)d'g¡d6d7„ ƒZej	 
d(d)d'g¡d8d9„ ƒ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¡d@dA„ ƒƒZej	 
dBdCdDdE  dFg¡d
fdGdHg¡dIdJ„ ƒZ!ej	 
d&d)d'g¡ej	 
d(d)d'g¡dKdL„ ƒƒZ"ej	 
d&d)d'g¡dMdN„ ƒZ#ej	 
dOej$ej%g¡ej	 
d&d)d'g¡dPdQ„ ƒƒZ&ej	j'e( dRdS�ej	 
dTdUdVdWdXdYdZg¡d[d\„ ƒƒZ)d]d^„ Z*d_d`„ Z+dadb„ Z,dcdd„ Z-dedf„ Z.dgdh„ Z/didj„ Z0dkdl„ Z1dmdn„ Z2dodp„ Z3dqdr„ Z4ej	 
d&d'd.g¡dsdt„ ƒZ5dudv„ Z6dwdx„ Z7ej	 
d&ejeg¡dydz„ ƒZ8d{d|„ 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›dœd�dždŸd d¡d¢g¡d£d¤„ ƒZGej	 
d¥d¦d§d¨d©dªg¡d«d¬„ ƒZHd­d®„ ZIej	 
d¥d¦d§d¨d©dªg¡d¯d°„ ƒZJd±d²„ ZKej	 
d³d´dµd¶d·g¡d¸d¹„ ƒZLdºd»„ ZMd¼d½„ ZNd¾d¿„ ZOej	jPeQjPdÀd)dÁ�ej	 
dÂdÃeRjSdÄdÅ�gdÆdƒgdÇeRjSdÄdÅ�gg¡dÈdÉ„ ƒƒƒZTdÊdË„ ZUdÌdÍ„ ZVdÎdÏ„ ZWej	 
d—d)d'g¡ej	 
d”d–d•g¡ej	 
dÐeRjXeYg¡dÑdÒ„ ƒƒƒZZdÓdÔ„ Z[dÕdÖ„ Z\d×dØ„ Z]dÙdÚ„ Z^dÛdÜ„ Z_dÝdÞ„ Z`dßdà„ Zaej	 
dáedâƒedãdädÅ�edåƒg¡dædç„ ƒZbdèdé„ Zcej	 
dêeRjddëdìdí�eRjddîdìdädï�eRjddðdìdí�g¡dñdò„ ƒZedódô„ Zfdõdö„ Zgej	jheijjd÷dø„ ƒƒZkdùdú„ Zldûdü„ Zmej	 
dýenjod enjodì  g¡dþdÿ„ ƒZpej	 
dý�d �dg¡�d�d„ ƒZq�d�d„ Zr�d�d„ Zsej	j�detd;��d	�d
„ ƒZu�d�d„ Zve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„ ƒƒZw�d�d„ Zxej	 
d	d
dddg¡�d�d„ ƒZyej	 
d&d)ee�dœg¡�d�d„ ƒZz�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<ddìdg�d%�d&��d%ddìdg�d'œfe<ddìdg�d%�d&� }�d#¡�d%ddìdg�d'œfe<ddìg�d%ddgddgg�d(��d%ddìg�d'œfg¡�d)�d*„ ƒ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<ddìdg�d%�d&�e<ddìdg�d%�d&� }�d#¡e<ddìg�d%ddgddgg�d(�g¡�d+�d,„ ƒZej	 
d	ddddg¡�d-�d.„ ƒZ€ej	 
d	d
�d/g¡ej	 
dd)d'g¡�d0�d1„ ƒƒZ��d2�d3„ Z‚ej	 
�d4�d5�d6�d7�d8g¡�d9�d:„ ƒZƒej	 
�d;�d<�d=�d>�d?g¡�d@�dA„ ƒZ„ej	 
�dB�dC�dDg¡�dE�dF„ ƒZ…ej	 
�dG�dH�dIej†d
�d<ej	j�dJdS��dK�ej†�d/�d<ej	j�dJdS��dK�g¡�dL�dM„ ƒZ‡ej	 
�dNddì�dg¡�dO�dP„ ƒZˆej	 
�dG�dQ�dR�dS�dT�dU�dVg¡�dW�dX„ ƒZ‰�dY�dZ„ ZŠ�d[�d\„ Z‹�d]�d^„ ZŒej	 
�d_e|ddìdgdddg�d`œƒ�dafg¡�db�dc„ ƒZ�ej	jh�dd�de„ ƒZŽ�df�dg„ Z��dh�di„ Z��dj�dk„ Z‘�dl�dm„ Z’ej	 
�dne<�do�dp�dq�drœƒ�dsfe<�dt�du�dv�drœƒ�dwfe|�dx�dyg�dz�d{ggƒ�d|fe|�d}�d~g�d�d€ggƒ�d�fg¡�d‚�dƒ„ ƒZ“�d„�d…„ Z”ej	 
d	d
ddddg¡�d†�d‡„ ƒZ•ej	 
d	d
ddg¡�dˆ�d‰„ ƒZ–�dŠ�d‹„ Z—d.S (Œ  ÚTestPandasContainerc                 C   sz   t  ¡ }t|ƒ}dgd dgd  dgd  dgt|ƒd   }tj|dd�|_tt|ƒƒ|d< t	j
t|ƒd	d
�|d< |S )NZbahé   ÚbarÚbazÚfooé   ÚE©ÚnameÚint64©ÚdtypeÚsort)r   ZgetSeriesDatar   r   ÚpdZCategoricalIndexÚindexÚlistÚreversedÚnpZarange)ÚselfZ_seriesdZ
_cat_frameÚcatr   r   r   Úcategorical_frame)   s    0z%TestPandasContainer.categorical_framec                 C   s    t  ¡ }d|_|j d ¡|_|S )NÚts)r   ZmakeTimeSeriesr&   r,   Ú
_with_freq)r0   Úserr   r   r   Údatetime_series5   s    z#TestPandasContainer.datetime_seriesc                 C   s   t t ¡ ƒ}|j d ¡|_|S ©N)r   r   ZgetTimeSeriesDatar,   r4   ©r0   Údfr   r   r   Údatetime_frame>   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©r,   r   ©r   ©r   r   Úto_jsonÚcopyr   ©r0   r   r9   r   r   r   r   r   Ú test_frame_double_encoded_labelsF   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 )
Nr;   r<   r=   r>   é   ÚxÚyr?   r@   rA   rD   r   r   r   Útest_frame_non_unique_indexR   s    "z/TestPandasContainer.test_frame_non_unique_indexr,   r   c              	   C   sX   t ddgddggddgddgd�}d	|› d
�}tjt|d�� |j|d� W 5 Q R X d S )Nr;   r<   r=   r>   rG   rH   rI   r?   z+DataFrame index must be unique for orient='ú'©Úmatchr@   ©r   ÚpytestÚraisesÚ
ValueErrorrB   ©r0   r   r9   Úmsgr   r   r   Ú"test_frame_non_unique_index_raisesZ   s    "z6TestPandasContainer.test_frame_non_unique_index_raisesÚdatar;   r<   r=   r>   ç      ø?ç      @g      @g      @rG   é   Ú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š|}ddg|_t	 
||¡ d S )NrG   é   rH   r?   r@   )r   Úconvert_datesr   r   údatetime64[ns]é@B rF   zx.1)r   r   rB   Úilocr)   Úviewr/   r'   r   r   r   )r0   r   rU   r9   r   r   r   r   r   Útest_frame_non_unique_columnsa   s    
  ÿ.
z1TestPandasContainer.test_frame_non_unique_columnsc              	   C   sX   t ddgddggddgddgd�}d	|› d
�}tjt|d�� |j|d� W 5 Q R X d S )Nr;   r<   r=   r>   rG   rZ   rH   r?   z-DataFrame columns must be unique for orient='rK   rL   r@   rN   rR   r   r   r   Ú$test_frame_non_unique_columns_raises   s    "z8TestPandasContainer.test_frame_non_unique_columns_raisesc                 C   s   |  ¡ |j dd�kst‚d S )Nr   r@   ©rB   ÚAssertionError)r0   Úfloat_framer   r   r   Útest_frame_default_orient‡   s    z-TestPandasContainer.test_frame_default_orientr)   FÚconvert_axesTc                 C   s0   |j |d�}t||||d�}|}t|||ƒ d S ©Nr@   ©r   rf   r)   ©rB   r   r   )r0   r   rf   r)   rd   rU   r   r   r   r   r   Útest_roundtrip_simpleŠ   s    z)TestPandasContainer.test_roundtrip_simplec                 C   s0   |j |d�}t||||d�}|}t|||ƒ d S rg   ri   )r0   r   rf   r)   Ú	int_framerU   r   r   r   r   r   Útest_roundtrip_intframe”   s    z+TestPandasContainer.test_roundtrip_intframeNZU3c                 C   sÞ   t t d¡dd„ tdƒD ƒdd„ tdƒD ƒ|d�}|j|d�}t||||d	�}| ¡ }|sf| tj¡}|r”|d
k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>¡   s     z?TestPandasContainer.test_roundtrip_str_axes.<locals>.<listcomp>rn   c                 S   s   g | ]}t |ƒ‘qS r   ro   rq   r   r   r   rt   ¢   s     rm   )r   r,   r)   r@   rh   r?   r   rF   )r   r/   Zzerosr   rB   r   rC   Úastyper'   r   r,   r   )r0   r   rf   r)   r9   rU   r   r   r   r   r   Útest_roundtrip_str_axesœ   s&    üz+TestPandasContainer.test_roundtrip_str_axesc                 C   sn   |dkr&|j  tjjd|› d�d�¡ |j|d�}t|||d�}| ¡ }|j 	t
¡|_d |j_t|||ƒ d S )Nr?   z.Can't have duplicate index values for orient 'z')©Úreasonr@   ©r   rf   )ÚnodeÚ
add_markerrO   ÚmarkÚxfailrB   r   rC   r,   ru   rp   r&   r   )r0   Úrequestr   r2   rf   rU   r   r   r   r   r   Útest_roundtrip_categorical¼   s    
ÿÿz.TestPandasContainer.test_roundtrip_categoricalc                 C   st   t ƒ }|j|d�}t|||d�}|dkrLtjg |r6tntd�}t ||d�}n|dkr\t ƒ }n| ¡ }t 	||¡ d S )Nr@   ry   rF   r(   r?   )
r   rB   r   r+   ÚIndexÚfloatÚobjectrC   r   r   )r0   r   rf   Zempty_framerU   r   Úidxr   r   r   r   Útest_roundtrip_emptyÑ   s    z(TestPandasContainer.test_roundtrip_emptyc                 C   s`   |j |d�}t|||d�}| ¡ }|sP|j tj¡d }|dkrJ| t¡}||_t	|||ƒ d S )Nr@   ry   r]   rF   )
rB   r   rC   r,   r_   r/   r'   ru   rp   r   )r0   r   rf   r:   rU   r   r   rƒ   r   r   r   Útest_roundtrip_timestampà   s    
z,TestPandasContainer.test_roundtrip_timestampc           	      C   s¢   t  dddddg¡}dddd	d
gdddddgdddddgdddddgdœ}t||d�}|j|d�}t|||d�}| ¡ }|jf | d¡ t	j
¡Ž}t|||ƒ d S )Nr;   r<   r=   r>   Úeg        ç      ð?ç       @ç      @ç      @Zfoo1Zfoo2Zfoo3Zfoo4Zfoo5TF)ÚAÚBÚCÚD)rU   r,   r@   ry   Únumber)r+   r€   r   rB   r   rC   ZassignZselect_dtypesru   r/   r'   r   )	r0   r   rf   r,   r   r9   rU   r   r   r   r   r   Útest_roundtrip_mixedñ   s    üz(TestPandasContainer.test_roundtrip_mixedz9#50456 Column multiindex is stored and loaded differently)rx   rP   Z2022ZJANZFEBZ2023c                 C   sD   t ddgddggtj |¡d�}t|jdd�dd�}t ||¡ d S )NrG   rZ   rX   rn   ©r   rF   r@   )r   r+   Z
MultiIndexZfrom_arraysr   rB   r   r   )r0   r   r9   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 columnsrF   )zN{"badkey":["A","B"],"index":["2","3"],"data":[[1.0,"1"],[2.0,"2"],[null,"3"]]}zunexpected key\(s\): badkeyrF   c              	   C   s.   t jt|d�� tt|ƒ|d� W 5 Q R X d S )NrL   r@   )rO   rP   rQ   r   r   )r0   rU   rS   r   r   r   r   Ú$test_frame_from_json_bad_data_raises  s    #z8TestPandasContainer.test_frame_from_json_bad_data_raisesc                 C   sˆ   t ddgdddggƒ}t|j|d�|||d�}t |jd ¡sBt‚t d	d
gdddggƒ}t|j|d�|||d�}t |jd ¡s„t‚d S )NrG   rZ   rn   r   é   r@   rh   ©r   rZ   Ú1Ú2Ú4Ú5Ú6)r   r   rB   r/   Úisnanr^   rc   )r0   r   rf   r)   Znum_dfr   Zobj_dfr   r   r   Ú!test_frame_from_json_missing_dataA  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   r/   Únanr   r   )r0   r)   r   r   r   r   r   Ú(test_frame_read_json_dtype_missing_valueV  s    z<TestPandasContainer.test_frame_read_json_dtype_missing_valueÚinfc                 C   sH   t ddgdddggƒ}||jd< t| ¡ |d�}t |jd ¡sDt‚d S )NrG   rZ   rn   r   r•   r–   r(   )r   Úlocr   rB   r/   rœ   r^   rc   )r0   r    r)   r9   r   r   r   r   Útest_frame_infinity_  s    
z'TestPandasContainer.test_frame_infinityz$not compliant on 32-bit, xref #15865rw   zvalue,precision,expected_val)gffffffî?rG   r‡   )g333333ÿ?rG   rˆ   )g333333ÿ¿rG   g       À)g×£p=
×ï?rZ   r‡   )g–C‹lçûï?rX   r‡   )gûÿÿÿÿÿï?r#   r‡   c                 C   s2   t d|igƒ}|j|d�}|d|› d�ks.t‚d S )NZa_float)Zdouble_precisionz{"a_float":{"0":ú}}©r   rB   rc   )r0   ÚvalueÚ	precisionZexpected_valr9   Úencodedr   r   r   Ú"test_frame_to_json_float_precisioni  s    z6TestPandasContainer.test_frame_to_json_float_precisionc              	   C   s<   t dddgƒ}d}tjt|d�� |jdd� W 5 Q R X d S ©NrG   rZ   rX   z+Invalid value 'garbage' for option 'orient'rL   Úgarbager@   rN   )r0   r9   rS   r   r   r   Útest_frame_to_json_exceptz  s    z-TestPandasContainer.test_frame_to_json_exceptc                 C   sf   t ddgd�}|jrt‚tjt| ¡ t|jƒd�|dd� t dg ig d�jd	d
�}d}||ksbt‚d S )NÚjimÚjoer‘   r(   F©Úcheck_index_typeÚtest©r,   r   r@   z{"test":{}})	r   Ú_is_mixed_typerc   r   r   r   rB   ÚdictÚdtypes©r0   r9   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*t‚tjt| ¡ t|j	ƒd�|dd� d S )Nr¬   r­   r‘   Úi8r(   Fr®   )
r   ru   r²   rc   r   r   r   rB   r³   r´   r8   r   r   r   Útest_frame_empty_mixedtype‹  s    
  ÿz.TestPandasContainer.test_frame_empty_mixedtypec                 C   s  dddddgdddd	d
gdddddgdddddgg}t |tdƒdddddgd�}|jsZt‚| ¡ }dD ]*}|j|d�}t||dd�}t ||¡ qft	 
t|ƒ¡|_|jd d�}t|d dd�}t ||¡ t	 
|jd ¡|_|jd!d�}t|d!dd�}t ||¡ d S )"Né
   rG   r"   çš™™™™™¹?g{®Gáz„?é   rZ   r    gš™™™™™É?g{®Gáz”?é   rX   r!   g333333Ó?g¸…ëQ¸ž?é(   rn   Úquxgš™™™™™Ù?g{®Gáz¤?ÚabcdZ1stZ2ndZ3rdZ4thZ5thr?   )rF   r,   r   r@   Fry   r   r   )r   r-   r²   rc   rC   rB   r   r   r   r+   Z
RangeIndexr   r,   Úshaper   )r0   Úvalsr9   Úrightr   ZinpÚleftr   r   r   Útest_frame_mixedtype_orient”  s0    ü  ÿ
z/TestPandasContainer.test_frame_mixedtype_orientc           
   	   C   s  t  dd¡}tt |¡d d�}tddddgdd	d
dgddddgddddgddddggddddg|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©ÚfreqgÛÃ‰àù?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Œ   r�   rŽ   ©r   r,   z19920106 18:21:32.12ÚdaterY   rX   ÚmodifiedrG   ÚioÚjsonrU   ztsframe_v012.json)Zaxisztsframe_iso_v012.json)r+   Ú
date_ranger   r/   Zasarrayr   r
   r^   r   Úget_locÚNaTÚosÚpathÚjoinr   r   r   r   )
r0   ÚdatapathÚdtir9   Ú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dddd	d
dddddg
ddddddddddg
ddddddd d!d"d#g
d$d%d&d'd(d)d*d+d,d-g
d.d/d0d1d2d3d4d5d6d7g
d8d9d:d;d<d=d>d?d@dAg
dBœ|dC�}|j dD¡|_t|jdEdF�dEdF�}t	j
||dGdGdGdGdH� d S )INZ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8d64d068gD!¸€†í¥¿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4bfc4d87i¥/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±   ÚunicoderF   r@   T)r¯   Zcheck_column_typeZ	by_blocksZcheck_exact)r+   rÌ   r   r-   r   r   ru   r   rB   r   r   )r0   r,   Ú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sBt‚t d|giƒ}d}tjt|d�� | ¡  W 5 Q R X t |gd	gd
œddgd�}tjt|d�� | ¡  W 5 Q R X |jtd�}d|› d�}	||	ksÖt‚|jtd�d|› d�ksòt‚d S )Nc                   @   s(   e Zd Zddœdd„Zedœdd„ZdS )zFTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThingN©Úreturnc                 S   s   || _ t |¡| _d S r7   )ÚhexedÚbytesÚfromhexÚbinary)r0   rÝ   r   r   r   Ú__init__4  s    zOTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__init__c                 S   s   | j S r7   )rÝ   ©r0   r   r   r   Ú__str__8  s    zNTestPandasContainer.test_frame_nonprintable_bytes.<locals>.BinaryThing.__str__)Ú__name__Ú
__module__Ú__qualname__rá   rp   rã   r   r   r   r   ÚBinaryThing3  s   rç   Z574b4454ba8c5eb4f98a8f45r‹   z{"A":{"0":"ú"}}z6Unsupported UTF-8 sequence length when encoding stringrL   rG   ©r‹   rŒ   rŒ   r‘   ©Údefault_handlerz"},"B":{"0":1}})r   rÝ   rB   rc   rO   rP   ÚOverflowErrorrp   )
r0   rç   rÝ   ZbinthingZdf_printableZdf_nonprintablerS   rÙ   r   r   r   r   r   Útest_frame_nonprintable_bytes0  s&    

ÿÿz1TestPandasContainer.test_frame_nonprintable_bytesc                 C   s<   t dd dgddgiƒ ¡ }ddd › d�}||ks8t‚d S )Nr    i † rG   r"   i9  ú{"z":{"0":1},"foo":{"0":1337}}r¤   ©r0   r   r   r   r   r   Útest_label_overflowV  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 5 Q R X t |t|jd	d�d	d
d�¡ t|jdd�dd
d�}t |j	|j	¡ d S )Nr;   r<   rG   r±   z.Series index must be unique for orient='index'rL   r,   r@   rF   Úseries)r   Útypr   )
r	   rO   rP   rQ   rB   r   Úassert_series_equalr   Zassert_numpy_array_equalr   )r0   ÚsrS   Zunserializedr   r   r   Útest_series_non_unique_index\  s     ÿ
  ÿz0TestPandasContainer.test_series_non_unique_indexc                 C   s   |  ¡ |j dd�kst‚d S ©Nr,   r@   rb   )r0   Ústring_seriesr   r   r   Útest_series_default_orientk  s    z.TestPandasContainer.test_series_default_orientc                 C   sP   |j |d�}t|d|d�}|}|dkr2|jdd�}|dkr@d |_t ||¡ d S ©Nr@   rñ   ©rò   r   ©r   r   Tr   rF   ©rB   r   r   r&   r   ró   )r0   r   r÷   rU   r   r   r   r   r   Útest_series_roundtrip_simplen  s    z0TestPandasContainer.test_series_roundtrip_simplec                 C   sR   |j |d�}t|d||d�}|}|dkr4|jdd�}|dkrBd |_t ||¡ d S )Nr@   rñ   )rò   r   r)   rû   Tr   rF   rü   )r0   r   r)   Zobject_seriesrU   r   r   r   r   r   Útest_series_roundtrip_objectz  s    z0TestPandasContainer.test_series_roundtrip_objectc                 C   s^   t g g tjd�}|j|d�}t|d|d�}|jdd�}|dkrN|j tj¡|_t 	||¡ d S )N©r,   r)   r@   rñ   rú   Tr   rF   )
r	   r/   Úfloat64rB   r   r   r,   ru   r   ró   )r0   r   Zempty_seriesrU   r   r   r   r   r   Útest_series_roundtrip_empty‡  s    z/TestPandasContainer.test_series_roundtrip_emptyc                 C   sP   |j |d�}t|d|d�}|}|dkr2|jdd�}|dkr@d |_t ||¡ d S rù   rü   )r0   r   r6   rU   r   r   r   r   r   Ú test_series_roundtrip_timeseries’  s    z4TestPandasContainer.test_series_roundtrip_timeseriesc                 C   sb   t tdƒddddddgd�}|j|d	�}t|d
|d�}| ¡ }|dkrR|jdd�}t ||¡ d S )Nr•   r;   r<   r=   r>   r†   Úfr±   r@   rñ   rú   rû   Tr   )r	   r   rB   r   rC   r   r   ró   )r0   r   r)   rô   rU   r   r   r   r   r   Útest_series_roundtrip_numericž  s    z1TestPandasContainer.test_series_roundtrip_numericc              	   C   s<   t dddgƒ}d}tjt|d�� |jdd� W 5 Q R X d S r©   )r	   rO   rP   rQ   rB   )r0   rô   rS   r   r   r   Útest_series_to_json_exceptª  s    z.TestPandasContainer.test_series_to_json_exceptc                 C   s4   t dddgƒ}t| ¡ ddd�}tj||dd� d S )Nç=
×£p=@rñ   T)rò   Úprecise_floatFr®   )r	   r   rB   r   ró   ©r0   rô   r   r   r   r   Ú#test_series_from_json_precise_float°  s    z7TestPandasContainer.test_series_from_json_precise_floatc                 C   s@   t dddgƒ}t| ¡ dtjd�}t dgd ƒ}t ||¡ d S )Nr  rñ   ©rò   r)   rn   rX   )r	   r   rB   r/   r'   r   ró   )r0   rô   r   r   r   r   r   Útest_series_with_dtypeµ  s    z*TestPandasContainer.test_series_with_dtypezdtype,expectedú
2000-01-01r\   r(   l    ,ŸUqc                 C   s4   t dgdd�}| ¡ }t|d|d�}t ||¡ d S )Nr  r\   r(   rñ   r
  )r	   rB   r   r   ró   )r0   r)   r   rô   rU   r   r   r   r   Útest_series_with_dtype_datetime¼  s    z3TestPandasContainer.test_series_with_dtype_datetimec                 C   s8   t dddgdddggƒ}t| ¡ dd�}t ||¡ d S )Nr  T)r  ©r   r   rB   r   r   ©r0   r9   r   r   r   r   Ú"test_frame_from_json_precise_floatÉ  s    z6TestPandasContainer.test_frame_from_json_precise_floatc                 C   s>   t tdƒddddddgdd	�}t| ¡ d d
�}t ||¡ d S )Nr•   r;   r<   r=   r>   r†   r  r'   rÿ   ©rò   )r	   r   r   rB   r   ró   r  r   r   r   Útest_typÎ  s    zTestPandasContainer.test_typc                 C   sp   t dddgdddggƒ}t| ¡ ƒ}t ||¡ t dddgdddgdœdd	d
gd�}t| ¡ ƒ}t ||¡ d S )NrG   rZ   rX   rn   r   r•   ©r;   r<   r‹   rŒ   r�   r±   r  r  r   r   r   Útest_reconstruction_indexÓ  s    $z-TestPandasContainer.test_reconstruction_indexc              	   C   s<   t  d¡�(}|||fD ]}| |¡ t|ƒ qW 5 Q R X d S )Nú	test.json)r   Úensure_cleanrB   r   )r0   rd   rk   r:   rÐ   r9   r   r   r   Ú	test_pathÝ  s    
zTestPandasContainer.test_pathc                 C   sR   |  ¡ }t|ƒ}t ||¡ |  ¡ }t|dd�}tj||dd� |jd ksNt‚d S )Nrñ   r  F)Zcheck_names)rB   r   r   r   ró   r&   rc   )r0   r6   r:   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 )NrY   rÈ   r‡   r"   Úns©Ú	date_unitF©r[   r·   r'   r±   rñ   r  )r
   rB   r   r   r   rC   r   r_   ru   r	   r,   ró   )r0   r6   r:   r9   rË   r   r   r3   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sht‚d S )Niä  rG   )ÚyearÚmonthÚdayr;   r±   ©r  r  z+{"1577836800000":1577836800000,"null":null}zA{"2020-01-01T00:00:00.000":"2020-01-01T00:00:00.000","null":null}Ú}ú	,"a":"a"})r+   rÎ   Úappendr	   rB   Úreplacerc   )r0   r  r!  r"  rU   r5   r   r   r   r   r   Útest_date_index_and_values  s    
ÿz.TestPandasContainer.test_date_index_and_valuesÚ
infer_wordZ
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ÚidrG   l    $äAÅrZ   z
2002-11-08r‘   )	Úpandas.io.jsonr0  r   r
   r+   rÎ   r   r   r   )r0   r,  r0  rU   r   r   r   r   r   Útest_convert_dates_infer  s     ÿz,TestPandasContainer.test_convert_dates_inferzdate,date_unit)ú20130101 20:43:42.123N)ú20130101 20:43:42rô   )r4  Ú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|ƒ}| ¡ }t	 
||¡ d S )NrÈ   rG   r   r   ©r  r  r&  )r
   r+   rÎ   r^   r   rÍ   rB   r   rC   r   r   )r0   rÈ   r  r:   r9   rË   r   r   r   r   r   Útest_date_format_frame5  s    z*TestPandasContainer.test_date_format_framec              	   C   s4   |}d}t jt|d�� |jddd� W 5 Q R X d S )Nú*Invalid value 'foo' for option 'date_unit'rL   r   r"   r8  )rO   rP   rQ   rB   )r0   r:   r9   rS   r   r   r   Útest_date_format_frame_raisesM  s    z1TestPandasContainer.test_date_format_frame_raisesc                 C   sn   t t|ƒ|jd�}tj|jd< tj|jd< |r>|jd|d�}n|jdd�}t|dd�}| ¡ }t	 
||¡ d S )	Nr±   rG   r   r   r8  r&  rñ   r  )r	   r
   r,   r+   rÎ   r^   rB   r   rC   r   ró   )r0   rÈ   r  r6   r3   rË   r   r   r   r   r   Útest_date_format_seriesS  s    z+TestPandasContainer.test_date_format_seriesc              	   C   sB   t tdƒ|jd�}d}tjt|d�� |jddd� W 5 Q R X d S )Nr4  r±   r:  rL   r   r"   r8  )r	   r
   r,   rO   rP   rQ   rB   )r0   r6   r3   rS   r   r   r   Útest_date_format_series_raisesi  s    z2TestPandasContainer.test_date_format_series_raisesÚunitrô   r6  r7  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 )Nr5  rÈ   z19710101 20:43:42rG   z21460101 20:43:42rZ   rn   r  r8  r  )
r
   r   rÍ   r^   r+   rÎ   rB   r   r   r   )r0   r>  r:   r9   ÚdlrË   r   r   r   r   Útest_date_unito  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   )r0   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   rZ   ZABr‘   rY   rÈ   ÚintsTÚbools©r×   )rB  rC  r(   )r   r/   ÚrandomÚrandnr-   r
   r   r+   rÌ   r,   rB   r   r'   Zbool_r   r   )r0   Zdfj2rË   r   r   r   r   Útest_doc_example˜  s    z$TestPandasContainer.test_doc_examplec                 C   sF   |ddddƒ}t  |¡}| ¡ }t|ƒ}t |j|j|jd�|¡ d S )NrÊ   rË   rU   z	teams.csvr?   )	r+   Zread_csvrB   r   r   r   Zreindexr,   r   )r0   rÒ   rÐ   r9   rô   r   r   r   r   Útest_round_trip_exception_£  s
    
z.TestPandasContainer.test_round_trip_exception_ú@https://api.github.com/repos/pandas-dev/pandas/issues?per_page=5)ÚurlZcheck_before_testzfield,dtypeZ
created_atÚUTC©ÚtzZ	closed_atZ
updated_atc                 C   s&   d}t |dd�}|| j|ks"t‚d S )NrI  Tr  )r   r)   rc   )r0   Úfieldr)   rJ  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,t‚t| ¡ dd� |¡}t ||¡ t tdƒtdd�gt	 
d	d
g¡d�}|jdks€t‚t| ¡ dd� |¡}t ||¡ ttdƒtdd�gƒ}|d	 jdksÊt‚t |t| ¡ ƒ |¡¡ d S )Nc                 S   s   t j| dd�S )Nr6  ©r>  )r+   Úto_timedelta)rH   r   r   r   Ú<lambda>¾  ó    z4TestPandasContainer.test_timedelta.<locals>.<lambda>é   r   ©Úsecondsztimedelta64[ns]rñ   r  r   rG   r±   )r	   r   r)   rc   r   rB   Úapplyr   ró   r+   r€   r   r   )r0   Ú	converterr5   r   Úframer   r   r   Útest_timedelta½  s    $z"TestPandasContainer.test_timedeltac                 C   sr   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 )NrT  ©Údaysr   rU  rG   rZ   rY   )Ústartr×   ©r;   r<   r=   r  r  rP  r;   r=   )r   r   r+   rÌ   r   rB   rQ  r;   Úto_datetimer=   r   r   )r0   rY  r   r   r   r   Útest_timedelta2Ï  s    ýÿz#TestPandasContainer.test_timedelta2c                 C   sv   t dƒ}tdƒ}td||gitd�}tdt |¡ d¡j| d¡jgiƒ}t|j	dd�ddid�}t
j||dd	� d S )
NrT  rY   r;   r(   r  r  r'   Fr®   )r   r
   r   r‚   r+   Ú	TimedeltaZas_unitÚ_valuer   rB   r   r   )r0   Útdr3   rY  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slt‚d S )NrG   r[  rZ   r;   r±   r   zA{"P1DT0H0M0S":"P1DT0H0M0S","P2DT0H0M0S":"P2DT0H0M0S","null":null}z7{"86400000":86400000,"172800000":172800000,"null":null}r'  r(  r&  )r+   rÎ   r)  r	   r*  rB   rc   )r0   r!  r  re  rU   r5   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 )Nr;   é   rê   Fr®   )r‚   r   rp   r   rB   r   r   )r0   r¥   rY  r   r   r   r   r   Útest_default_handlerÿ  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^t‚d S )Nr   r/  c                 S   s(   t | tƒr dd| jfd| jfgS t| ƒS )N)ZmathjsÚComplexÚreZim)Ú
isinstanceÚcomplexÚrealÚimagrp   ©Úobjr   r   r   Údefault	  s    
zBTestPandasContainer.test_default_handler_indirect.<locals>.defaulté	   rG   ZSTRrn   éûÿÿÿrž   zN/Ar  r;   r<   r‘   zR[9,[[1,null],["STR",null],[[["mathjs","Complex"],["re",4.0],["im",-5.0]],"N\/A"]]]r   ©rë   r   )r2  r0  r   rl  r�   rc   )r0   r0  rq  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sLt‚d S )NrG   gffffff@rn   rs  rž   g333333ó?r   r  r;   r<   r‘   zE[["(1+0j)","(nan+0j)"],["(2.3+0j)","(nan+0j)"],["(4-5j)","(1.2+0j)"]]r   rt  )r   rl  r�   rB   rp   rc   )r0   r9   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 5 Q R X t jtˆ d��& tdddtd	d
ƒgiƒj|d� W 5 Q R X d S )NZraisinc                    s   t ˆ ƒ‚d S r7   )Ú	TypeErrorro  ©rS   r   r   Úmy_handler_raises+  s    zJTestPandasContainer.test_default_handler_raises.<locals>.my_handler_raisesrL   r;   rG   rZ   rê   rn   rs  )rO   rP   rw  r   r‚   rB   rl  )r0   ry  r   rx  r   Útest_default_handler_raises(  s    ÿÿz/TestPandasContainer.test_default_handler_raisesc              	   C   sx   t ddddddddgiƒ}|d |d< | ¡ }|d  d¡|d< || ¡ ksPt‚|d }|d }| ¡ | ¡ kstt‚d S )Nr‹   r;   r<   r=   rŒ   Úcategory)r   rB   ru   rc   )r0   r9   r   rô   Úscr   r   r   Útest_categorical7  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`t‚t|ƒ}t|ƒ}| ¡ | ¡ ks„t‚d S )	NrY   rX   ú
US/Eastern©r×   rM  ÚutcrD  ré   r‹   )	r+   rÌ   Z
tz_convertZtz_localizer   rC   rB   rc   r	   )r0   Útz_rangeZtz_naiver9   Zdf_naiver   ZstzZs_naiver   r   r   Útest_datetime_tzD  s    z$TestPandasContainer.test_datetime_tzc                 C   sŠ   t tj dd¡ƒ}tj|jd d…< | d¡}| ¡ }|| ¡ ksDt‚t	tj d¡ƒ}tj|jd d…< | d¡}| ¡ }|| ¡ ks†t‚d S )Nr¹   rn   é   ZSparse)
r   r/   rE  rF  rž   r¡   ru   rB   rc   r	   )r0   r9   Zsdfr   rô   Ússr   r   r   Útest_sparseT  s    

zTestPandasContainer.test_sparser3   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$t‚| ¡ }||dd�|ks@t‚d S )Nr   r/  z"2013-01-10T05:00:00.000Z"T©Z	iso_dates)r2  r0  rc   Úto_pydatetime)r0   r3   r0  ÚexpÚdtr   r   r   Útest_tz_is_utcd  s
    	z"TestPandasContainer.test_tz_is_utcc                 C   sL   ddl m} tdƒ}d}||dd�|ks,t‚| ¡ }||dd�|ksHt‚d S )Nr   r/  z2013-01-10 05:00:00z"2013-01-10T05:00:00.000"Tr†  )r2  r0  r
   rc   r‡  )r0   r0  r3   rˆ  r‰  r   r   r   Útest_tz_is_naiveu  s    z$TestPandasContainer.test_tz_is_naiver�  z2013-01-01 05:00:00ZrZ   rD  z2013-01-01 00:00:00r  z2013-01-01 00:00:00-0500c                 C   s    ddl m} d}d}||dd�|ks(t‚t|ƒ}||dd�|ksDt‚|| t¡dd�|ks^t‚td|iƒ}||dd�}||ks‚t‚|| dti¡dd�sœt‚d S )Nr   r/  z7["2013-01-01T05:00:00.000Z","2013-01-02T05:00:00.000Z"]zF{"DT":{"0":"2013-01-01T05:00:00.000Z","1":"2013-01-02T05:00:00.000Z"}}Tr†  ÚDT)r2  r0  rc   r   ru   r‚   r   )r0   r�  r0  rˆ  ÚdfexprÓ   r9   r   r   r   r   Útest_tz_range_is_utc  s    	ÿz(TestPandasContainer.test_tz_range_is_utcc                 C   s’   ddl m} tjddd�}d}d}||dd	�|ks6t‚|| t¡dd	�|ksPt‚td
|iƒ}||dd	�}||kstt‚|| d
ti¡dd	�sŽt‚d S )Nr   r/  z2013-01-01 05:00:00rZ   rD  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Œ  )r2  r0  r+   rÌ   rc   ru   r‚   r   )r0   r0  rÓ   rˆ  r�  r9   r   r   r   r   Útest_tz_range_is_naiveœ  s    z*TestPandasContainer.test_tz_range_is_naivec                 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©ÚlinesrG   rZ   r;   r<   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_optionsrG   rZ   r;   r<   r‘   r“  )r0   Ús3_resourceÚs3sor   r   r   r   r   Útest_read_s3_jsonl³  s      ÿz&TestPandasContainer.test_read_s3_jsonlc              
   C   sn   t  d¡�Z}t|dƒ�}| d¡ W 5 Q R X t|dd�}tddgddggdd	gd
�}t  ||¡ W 5 Q R X d S )Nztmp_items.jsonÚwr�  Tr‘  rG   rZ   r;   r<   r‘   )r   r  ÚopenÚwriter   r   r   )r0   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"   r;   r<   r‘   )r   r   r   r   r   ©r0   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s4t‚t|tdgdgd�}| ¡ }dt|ƒ d }||kslt‚d S )	NÚ	articleId)r)   r,   ú{"articleId":r'  r   )r)   r,   r   ú{"0":{"articleId":r£   )r	   r‚   rB   rp   rc   r   )r0   r   rñ   rË   r   r9   r   r   r   Útest_to_json_large_numbersØ  s    z.TestPandasContainer.test_to_json_large_numberslûÿÿÿ        l            c              	   C   st   t dt|ƒ d ƒ}d}tjt|d�� t|ƒ W 5 Q R X t dt|ƒ d ƒ}tjt|d�� t|ƒ W 5 Q R X d S )Nr¢  r'  z#Value is too small|Value is too bigrL   r£  r£   )r   rp   rO   rP   rQ   r   )r0   r   rË   rS   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:t‚t d
dgddggddgd�}|jddd�}d}||kstt‚t t|dd�|¡ t ddgddggddgd�}|jddd�}d}||ksÂt‚t t|dd�|¡ d S )NrG   rZ   r;   r<   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   rB   rc   r   r   r   rµ   r   r   r   Útest_to_jsonlÿ  s    z!TestPandasContainer.test_to_jsonlz%GH#13774 encoding kwarg not supportedc                 C   sÈ   dddddgddddgdddddgdddddgddddgddddgdddddg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�¡ qŽq†ddd„}|D ]}||ƒ q¶d S )Ns   EÉ, 17rS  ó   aó   bó   cs   EE, 17s   øüs   Aøüc                 S   s   g | ]}d d„ |D ƒ‘qS )c                 S   s$   g | ]}t |tƒr| d ¡n|‘qS )úlatin-1)rk  rÞ   Údecode)rr   rH   r   r   r   rt   $  s     zFTestPandasContainer.test_latin_encoding.<locals>.<listcomp>.<listcomp>r   )rr   rI   r   r   r   rt   #  s   ÿz;TestPandasContainer.test_latin_encoding.<locals>.<listcomp>r{  r(   r«  c              	   S   sD   t  d¡�0}| j||d� t||d�}t j| |dd� W 5 Q R X d S )Nr  )ÚencodingF)Zcheck_categorical)r   r  rB   r   ró   )rô   r­  rÐ   Zretrr   r   r   Ú	roundtrip-  s    z:TestPandasContainer.test_latin_encoding.<locals>.roundtrip)r«  )r/   rž   r‚   r)  r	   )r0   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sJt‚d S )Nr;   rG   T)r,   Údeep)r   rp   Zmemory_usageÚsumrB   rc   )r0   r9   Zsize_beforeZ
size_afterr   r   r   Ú"test_data_frame_size_after_to_json6  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 )NrG   rZ   rX   rn   r?   Útabler@   ©r   rB   r   r   r   )r0   r,   r   r   Údfjsonr   r   r   r   Ú.test_from_json_to_json_table_index_and_columns@  s    zBTestPandasContainer.test_from_json_to_json_table_index_and_columnsc                 C   sD   t ddgddgddgdœƒ}|jdd	�}t|dd	�}t ||¡ d S )
NrG   rZ   r‰   rŠ   rš   r›   r^  r¶  r@   r·  )r0   r   r¸  r   r   r   r   Ú#test_from_json_to_json_table_dtypesK  s    z7TestPandasContainer.test_from_json_to_json_table_dtypesc                 C   s¤   t  tdddgdd�td ddgdd�td d	d
gdd�tdddgdd�tddd gdd�tdd dgdd�dœ¡}|j|d�}t||dddddddœd�}t ||¡ d S )NrG   rZ   rX   r'   r(   rˆ   r‰   r   Ú r=   r‚   TFÚboolr;   r<   r{  z
2020-01-01z
2020-01-03r\   )ÚIntegerÚFloatZObjectZBoolZCategoryZDatetimer@   ©r   r)   )r   Ú	from_dictr	   rB   r   r   r   )r0   r   r   r¸  r   r   r   r   Ú%test_to_json_from_json_columns_dtypesR  s2     ÿúÿúýz9TestPandasContainer.test_to_json_from_json_columns_dtypes)r<   r=   c              	   C   sX   t ddgddgddgdœƒ}|jdd	�}d
}tjt|d�� t|d|d� W 5 Q R X d S )NrG   rZ   r‰   rŠ   rš   r›   r^  r¶  r@   z)cannot pass both dtype and orient='table'rL   r¿  ©r   rB   rO   rP   rQ   r   )r0   r)   r9   r¸  rS   r   r   r   Ú!test_read_json_table_dtype_raisesp  s
    z5TestPandasContainer.test_read_json_table_dtype_raisesc              	   C   s^   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 5 Q R X d S )NrG   rZ   rX   rn   r‡   rˆ   r´  rµ  r?   r¶  r@   z0cannot pass both convert_axes and orient='table'rL   Try   rÂ  )r0   r9   r¸  rS   r   r   r   Ú(test_read_json_table_convert_axes_raisesy  s
    "z<TestPandasContainer.test_read_json_table_convert_axes_raiseszdata, expectedrn   r   r‘   )r   rU   r"   rÇ   r‹   r%   )r&   rU   )r&   r,   c                 C   s(   |j ddd�}t |¡}||ks$t‚d S )NrF   F©r   r,   )rB   rË   Úloadsrc   ©r0   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sHt‚d S )Nr¶  FrÅ  r±   r   r@   )ZschemarU   )	rB   rË   rÆ  r+   rÊ   Zbuild_table_schemar   Úto_dictrc   ©r0   rU   r   r   r   r   r   Útest_index_false_to_json_table¦  s    
þz2TestPandasContainer.test_index_false_to_json_tablec              	   C   sL   t ddgddggddgd�}d}tjt|d	�� |j|d
d� W 5 Q R X d S )NrG   rZ   rn   r   r;   r<   r‘   z?'index=False' is only valid when 'orient' is 'split' or 'table'rL   FrÅ  rN   rR   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 )NrG   rZ   rX   rn   r  rÅ  r@   r·  )r0   r   r,   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ñ   r,   rú   éX   z2019-01-01 11:00:00rK  rL  r±   )r   r	   r   r   ró   rï   r   r   r   Útest_read_timezone_informationØ  s      ÿz2TestPandasContainer.test_read_timezone_informationrJ  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è   rJ  r“  )r0   rJ  r   r   r   r   r   Útest_read_json_with_url_valueà  s    z1TestPandasContainer.test_read_json_with_url_valueÚcompressionr»  z.gzz.bz2z.tarc              	   C   s<   d› d|› �}t jtd|› d�d�� t|ƒ W 5 Q R X d S )NAè  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz.jsonzFile z does not existrL   )rO   rP   ÚFileNotFoundErrorr   )r0   rÑ  Zlong_json_pathr   r   r   Ú'test_read_json_with_very_long_file_pathï  s     
ÿz;TestPandasContainer.test_read_json_with_very_long_file_pathzdate_format,key)r  i \&)r   Z
P1DT0H0M0Sc                 C   s@   t dggt d¡gd�}d|› d�}|j|d�}||ks<t‚d S )NrG   Z1Dr‘   rî   z
":{"0":1}}r&  )r   r+   ra  rB   rc   )r0   r  Úkeyr9   r   r   r   r   r   Útest_timedelta_as_labelý  s    z+TestPandasContainer.test_timedelta_as_labelzorient,expected)r,   z{"('a', 'b')":{"('c', 'd')":1}})r   z{"('c', 'd')":{"('a', 'b')":1}}z,Produces JSON but not in a consistent manner)Zmarksc                 C   s2   t dggdgdgd�}|j|d�}||ks.t‚d S )NrG   r  )r=   r>   r?   r@   r¤   ©r0   r   r   r9   r   r   r   r   Útest_tuple_labels  s    z%TestPandasContainer.test_tuple_labelsÚindentc                 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‚t‚d S )Nr"   r    r!   r¾   r;   r<   r‘   ©rØ  ú z{
z"a":{
z"0":"foo",
z
"1":"baz"
z},
z"b":{
z"0":"bar",
z
"1":"qux"
z}
}r¤   )r0   rØ  r9   r   Úspacesr   r   r   r   Útest_to_json_indent#  s:    ÿÿÿÿÿÿÿÿÿÿÿÿz'TestPandasContainer.test_to_json_indent)rF   zã{
    "columns":[
        "a",
        "b"
    ],
    "index":[
        0,
        1
    ],
    "data":[
        [
            "foo",
            "bar"
        ],
        [
            "baz",
            "qux"
        ]
    ]
})r   zf[
    {
        "a":"foo",
        "b":"bar"
    },
    {
        "a":"baz",
        "b":"qux"
    }
])r,   zn{
    "0":{
        "a":"foo",
        "b":"bar"
    },
    "1":{
        "a":"baz",
        "b":"qux"
    }
})r   zn{
    "a":{
        "0":"foo",
        "1":"baz"
    },
    "b":{
        "0":"bar",
        "1":"qux"
    }
})r   zV[
    [
        "foo",
        "bar"
    ],
    [
        "baz",
        "qux"
    ]
])r¶  aa  {
    "schema":{
        "fields":[
            {
                "name":"index",
                "type":"integer"
            },
            {
                "name":"a",
                "type":"string"
            },
            {
                "name":"b",
                "type":"string"
            }
        ],
        "primaryKey":[
            "index"
        ],
        "pandas_version":"1.4.0"
    },
    "data":[
        {
            "index":0,
            "a":"foo",
            "b":"bar"
        },
        {
            "index":1,
            "a":"baz",
            "b":"qux"
        }
    ]
}c                 C   s:   t ddgddggddgd�}|j|dd	�}||ks6t‚d S )
Nr"   r    r!   r¾   r;   r<   r‘   rn   )r   rØ  r¤   rÖ  r   r   r   Útest_json_indent_all_orients7  s    wz0TestPandasContainer.test_json_indent_all_orientsc              	   C   s,   t jtdd�� tƒ jdd� W 5 Q R X d S )Nzmust be a nonnegative integerrL   éÿÿÿÿrÙ  )rO   rP   rQ   r   rB   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"]r;   ÚNaNÚInfinityz	-Infinity)r   r   r/   rž   r    r   r   rÊ  r   r   r   Útest_emca_262_nan_inf_support¶  s    ÿz1TestPandasContainer.test_emca_262_nan_inf_supportc                 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Ë   r0  r   r   r   r   )r0   Zencoded_jsonr   r   r   r   r   Útest_frame_int_overflow¿  s    z+TestPandasContainer.test_frame_int_overflowzdataframe,expected©rH   rI   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 t‚d S rö   )ÚstackrB   rc   )r0   Z	dataframer   rñ   r   r   r   r   Útest_json_multiindexÆ  s    z(TestPandasContainer.test_json_multiindexc                 C   sˆ   d\}}t dddgdddgdœƒ}|jd|› d	|› �|d
� d}|dd„ | d¡j ¡ D ƒkr`q„t d¡ |d8 }|dks@tdƒ‚q@d S )N)úpandas-testr  rG   rZ   rX   rn   r•   ræ  zs3://ú/)r•  r   c                 s   s   | ]}|j V  qd S r7   )rÔ  )rr   rp  r   r   r   Ú	<genexpr>Ý  s    z1TestPandasContainer.test_to_s3.<locals>.<genexpr>ré  rº   r   z,Timed out waiting for file to appear on moto)r   rB   ZBucketÚobjectsÚallÚtimeÚsleeprc   )r0   r–  r—  Zmock_bucket_nameZtarget_filer9   Ú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@t	‚d S )Nznot implementedrw   z{"0":{"0":null}})
rk  r   rO   r|   r}   rz   r{   r   rB   rc   )r0   Znulls_fixturer~   r|   r   r   r   r   Útest_json_pandas_nullså  s
    
z*TestPandasContainer.test_json_pandas_nullsc                 C   s*   t ddd�}tdddgƒ}t ||¡ d S )Nz[true, true, false]rñ   r  TF)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s6t‚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ç  rB   rc   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sFt‚d S )
Nc                   @   s"   e Zd Zddœdd„Zdd„ ZdS )zGTestPandasContainer.test_to_json_series_of_objects.<locals>._TestObjectNrÛ   c                 S   s   || _ || _|| _|| _d S r7   ©r;   r<   Ú_cr>   )r0   r;   r<   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.e)rä   rå   ræ   rá   r†   r   r   r   r   Ú_TestObject	  s   r÷  rG   rZ   rX   rn   rõ  Ú0)r;   r<   r>   )r	   rË   rÆ  rB   rc   )r0   r÷  rñ   r   r   r   Útest_to_json_series_of_objects  s    z2TestPandasContainer.test_to_json_series_of_objectszdata,expectedy      À       @y              ð?y      "@      À)r   rG   rZ   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t‚d S r7   rb   rÇ  r   r   r   Útest_complex_data_tojson  s    #z,TestPandasContainer.test_complex_data_tojsonc                 C   s2   d}t dddgid�}|jdd�}||ks.t‚d S )NzY{"columns":["col1"],"index":[0,1],"data":[[13342205958987758245],[12388075603347835679]]}Zcol1l   ¥:!c„&HI l   v8�$Z_
 )rU   rF   r@   r¤   )r0   r   r9   r   r   r   r   Útest_json_uint64=  s
    ÿz$TestPandasContainer.test_json_uint64c           	         sÞ  t  d¡‰ttdtjdgdd�tdddgdd�tdtjdgd	d�tdd
dgd	d�ddd gdddgdddgddd gdœƒ}|dkr¶ttjdddgtjd�ƒ}ttjddt	gtjd�ƒ}n(t
ˆ dddg¡ƒ}t
ˆ ddd g¡ƒ}|j|d�}t d|¡� t|||d�}W 5 Q R X ttdtjdgdd�tdddgdd�tdtjdgd	d�tdd
dgd	d�tddt	gdd�tdddgdd�||dœƒ‰|dk�r´ddlm‰  t‡ ‡‡fdd„ˆjD ƒƒ‰|dk�rÎttddƒƒˆ_t |ˆ¡ d S )NÚpyarrowrG   rX   ÚInt64r(   rZ   rV   rW   ZFloat64rˆ   TFr;   r<   r=   )r;   r<   r=   r>   r†   r  ÚgÚhÚpythonr@   úmode.string_storage)Údtype_backendr   Úbooleanr   ©ÚArrowExtensionArrayc                    s$   i | ]}|ˆ ˆj ˆ| d d�ƒ“qS )T©Zfrom_pandas)Úarray)rr   rã  ©r  r   Úpar   r   Ú
<dictcomp>w  s   ÿ zDTestPandasContainer.test_read_json_dtype_backend.<locals>.<dictcomp>r   rƒ  )rO   Úimportorskipr   r	   r/   rž   r   r  Zobject_r   r   rB   r+   Úoption_contextr   Úpandas.arraysr  r   r-   r   r   r   )	r0   Ústring_storager  r   r9   Zstring_arrayZstring_array_naÚoutr   r   r  r   Útest_read_json_dtype_backendG  sR    
øÿøÿ
þÿ
z0TestPandasContainer.test_read_json_dtype_backendc           
   	   C   s    t  d¡}tdtjdgdd�}|j|d�}t d|¡� t|||dd	�}W 5 Q R X tdtjdgdd�}|dkr�d
dl	m
}	 t|	|j|dd�ƒƒ}t ||¡ d S )Nrü  rG   rX   rý  r(   r@   r  rñ   )r  r   rò   r   r  Tr  )rO   r  r	   r/   rž   rB   r+   r  r   r  r  r  r   ró   )
r0   r  r  r   r	  r5   r  r   r   r  r   r   r   Útest_read_json_nullable_series‚  s    
   ÿz2TestPandasContainer.test_read_json_nullable_seriesc              	   C   s.   d}t jt|d�� tddd� W 5 Q R X d S )NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rL   r°   Únumpy)r  )rO   rP   rQ   r   )r0   rS   r   r   r   Útest_invalid_dtype_backend—  s    ÿz.TestPandasContainer.test_invalid_dtype_backend)˜rä   rå   ræ   rO   Zfixturer2   r6   r:   rE   r|   ZparametrizerJ   rT   r
   r`   ra   re   r�   rj   r/   r'   rl   r   Úintrv   r   r„   r…   r�   r}   rc   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  r-  rÈ   r+  r3  r9  r;  r<  r=  r@  rA  rG  rH  Únetworkr   r+   ZDatetimeTZDtyperO  rZ  r`  rd  ra  r   rf  rh  ru  rv  rz  r}  r‚  r…  rŠ  r‹  rÌ   rŽ  r�  r”  Z
single_cpurc  Zskip_if_not_us_localer˜  r�  rŸ  ÚsysÚmaxsizer¤  r¥  r¦  r§  rw  r°  r³  r¹  rº  rÁ  rÃ  rÄ  r   Zrename_axisrÈ  rË  rÌ  rÍ  rÏ  rÐ  rÓ  rÕ  Úparamr×  rÜ  rÝ  rß  râ  rå  rè  rñ  rò  ró  rô  rù  rú  rû  r  r  r  r   r   r   r   r   (   sø  




üþ	




þýþ
ÿÿ÷éþ"

úþ	`&

þþ

ùþ
ûþ

ûþ


þýþ
ýþ
	
ýþ
		
!
 .ÿ& þ(þ  ÿü(þ þìþ	 (  ÿ öþ
üþ	þ
 
ÿÿýÿýõþ´þu	þÿþ
	þþþÿüìþ!
 ÿ8r   c               	   C   s>   t tdƒƒ} |  ¡ }tjtdd�� t|dd� W 5 Q R X d S )NrG   zThe engine type foorL   r"   )Úengine©r	   r   rB   rO   rP   rQ   r   ©r5   r  r   r   r   Útest_invalid_engine   s    r  c               	   C   s@   t tdƒƒ} |  ¡ }tjtdd�� t|ddd� W 5 Q R X d S )NrG   z&currently pyarrow engine only supportsrL   rü  F)r  r’  r  r  r   r   r   Útest_pyarrow_engine_lines_false¨  s    r  )%r-  r   Údecimalr   rÊ   r   rË   rÏ   r  rî  r  r/   rO   Zpandas.compatr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrc  Zpandasr+   r   r   r   r	   r
   r   Zpandas._testingZ_testingr   Zpandas.core.arraysr   r   r   r   r  r  r   r   r   r   Ú<module>   sD                   