a
    é´«j)]  ã                   @   s,  d Z ddlZddlZddlmZ ddlmZmZmZ ddl	Z	ddl
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mZ ddlmZ ddlm  mZ ddlZddlmZ ddlm  m Z! ej" #d¡Z$G d	d
„ d
ƒZ%e&e%egZ'zddl(m)Z* e' +e*¡ W n e,�y   Y n0 e
j- .e
j- /e0¡¡Z1G dd„ dƒZ2ej3dd„ ƒZ4G dd„ dƒZ5dd„ Z6ej" 7dddg¡dd„ ƒZ8dd„ Z9ej" 7deddfeddfg¡d d!„ ƒZ:ej" 7d"g d#¢¡ej" 7dddg¡d$d%„ ƒƒZ;d&d'„ Z<d(d)„ Z=d*d+„ Z>d,d-„ Z?ej" 7d.ej@ejAejBejCejDejEejFejGejHg	¡d/d0„ ƒZIdS )1z0
Tests for the pandas.io.common functionalities
é    N)Úpartial)ÚBytesIOÚStringIOÚUnsupportedOperation)ÚPath)Úis_platform_windows)Úpa_version_under19p0z=ignore:Passing a BlockManager to DataFrame:DeprecationWarningc                   @   s&   e Zd ZdZddœdd„Zdd„ ZdS )ÚCustomFSPathz%For testing fspath on unknown objectsN)Úreturnc                 C   s
   || _ d S ©N©Úpath)Úselfr   © r   úZ/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/io/test_common.pyÚ__init__&   s    zCustomFSPath.__init__c                 C   s   | j S r   r   ©r   r   r   r   Ú
__fspath__)   s    zCustomFSPath.__fspath__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r	   #   s   r	   )Úlocalc                   @   s,  e Zd ZdZdd„ Zdd„ Zdd„ Ze d¡d	d
„ ƒZ	dd„ Z
dd„ Zej de¡dd„ ƒZej deeeg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zej dejdedfejdedfejd ed!fejd"ed#fej d$ed%fej!ded&fej"ded'fej#ded(fej$ded)fg	¡d*d+„ ƒZ%ej d,ej&j'dedfej&j(ded-fej&j)d ed!fej&j*d"ed#fej&j+d"ed.fej&j,ded&fej&j-ded(fej&j.ded)fg¡d/d0„ ƒZ/ej dejdedfej0dedfejdedfejd ed!fejd"ed#fej d$ed%fej!ded&fej"ded'fej#ded(fej$ded)fg
¡d1d2„ ƒZ1ej d3ejdd4fej0dd4fejdd5fejd d6fejd"d7fej2ej d$d8ejj3d9d:d;�d<�ej!dd=fej"dd>fej#dd?fej$dd@fg
¡dAdB„ ƒZ4ej dCdDi dfdEdFdGidGfdHi d"fdIi dfdJi dfdKi dfdLi dfdMdNe 5dO¡idfg¡dPdQ„ ƒZ6dRdS„ Z7dTS )UÚTestCommonIOCapabilitiesziindex,A,B,C,D
foo,2,3,4,5
bar,7,8,9,10
baz,12,13,14,15
qux,12,13,14,15
foo2,12,13,14,15
bar2,12,13,14,15
c                 C   sB   d}t  |¡}||ksJ ‚tj |¡s*J ‚tj |¡|ks>J ‚d S )Nz
~/sometest)ÚicomÚ_expand_userÚosr   ÚisabsÚ
expanduser©r   ÚfilenameZexpanded_namer   r   r   Útest_expand_userE   s
    
z)TestCommonIOCapabilities.test_expand_userc                 C   s2   d}t  |¡}||ksJ ‚tj |¡|ks.J ‚d S )Nz/somefolder/sometest)r   r   r   r   r   r   r   r   r   Útest_expand_user_normal_pathM   s    
z5TestCommonIOCapabilities.test_expand_user_normal_pathc                 C   sB   t  tdƒ¡}|dksJ ‚t  tdƒ¡}|tj dd¡ks>J ‚d S )NÚ.zfoo//barÚfooÚbar)r   Ústringify_pathr   r   r   Újoin)r   Úrel_pathZredundant_pathr   r   r   Útest_stringify_path_pathlibT   s    z4TestCommonIOCapabilities.test_stringify_path_pathlibzpy.pathc                 C   s8   t j dd¡}t j |¡}t|ƒ}t |¡|ks4J ‚d S )Nr$   r%   )r   r   r'   ÚabspathÚ	LocalPathr   r&   )r   r   Úabs_pathZlpathr   r   r   Útest_stringify_path_localpathZ   s    z6TestCommonIOCapabilities.test_stringify_path_localpathc                 C   s"   t dƒ}t |¡}|dksJ ‚d S )Núfoo/bar.csv)r	   r   r&   )r   ÚpÚresultr   r   r   Útest_stringify_path_fspatha   s    
z3TestCommonIOCapabilities.test_stringify_path_fspathc              	   C   s|   t  d¡}t ¡ �V}|jd|› �dd��"}|t |¡ks<J ‚W d   ƒ n1 sP0    Y  W d   ƒ n1 sn0    Y  d S )NÚfsspeczfile://Úwb©Úmode)ÚpytestÚimportorskipÚtmÚensure_cleanÚopenr   r&   )r   r2   r   Z
fsspec_objr   r   r   Ú!test_stringify_file_and_path_likef   s    

z:TestCommonIOCapabilities.test_stringify_file_and_path_likeÚ	path_typec                 C   s2   |\}}|d| ƒ}t j|dd�}||ks.J ‚d S )Nr.   Zinfer)Úcompression)r   Zinfer_compression)r   Zcompression_formatr<   Ú	extensionÚexpectedr   r=   r   r   r   Ú test_infer_compression_from_pathm   s    z9TestCommonIOCapabilities.test_infer_compression_from_pathc              	   C   s¢   t jt ¡ d��~}|dt|ƒj d ƒ}t |d¡�<}t|jjƒ ¡ sJJ ‚t	j
 |¡|jjksbJ ‚W d   ƒ n1 sv0    Y  W d   ƒ n1 s”0    Y  d S )N)Údirz~/z	/sometestÚw)ÚtempfileÚTemporaryDirectoryr   ÚhomeÚnamer   Ú
get_handleÚhandleÚis_absoluter   r   r   )r   r<   Útmpr    Úhandlesr   r   r   Útest_get_handle_with_patht   s
    z2TestCommonIOCapabilities.test_get_handle_with_pathc              	   C   sx   t ƒ �T}t |d¡�}|j|ks$J ‚W d   ƒ n1 s80    Y  |jrLJ ‚W d   ƒ n1 s`0    Y  |jstJ ‚d S )NÚr)r   r   rG   rH   Úclosed)r   Zinput_bufferrK   r   r   r   Útest_get_handle_with_buffer}   s
    ,(z4TestCommonIOCapabilities.test_get_handle_with_bufferc                 C   s¨   d}t jt|ƒddd��|}d}d}|j |¡}t|ƒ|ks>J ‚t|ƒ|k rjt|j ¡ ƒdks`J ‚||7 }qt||7 }q"|| d¡ks†J ‚W d   ƒ n1 sš0    Y  d S )	Nõ&   a,b,c
1,2,3
Â©,Â®,Â®
Look,a snake,ðŸ��ÚrbF©Úis_textó    é   r   úutf-8)r   rG   r   rH   ÚreadÚlenÚencode)r   ÚdatarK   r0   Ú	chunksizeÚchunkr   r   r   Ú)test_bytesiowrapper_returns_correct_bytes…   s    
zBTestCommonIOCapabilities.test_bytesiowrapper_returns_correct_bytesc                 C   sœ   t  d¡}d}t g d¢g d¢g d¢dœ¡}t|ƒ}tj|ddd	��D}| |j¡ 	¡ }t
rd| d
¡}t ||¡ |jrzJ ‚W d   ƒ n1 sŽ0    Y  d S )Nzpyarrow.csvrP   )Ú1õ   Â©ZLook)Ú2õ   Â®za snake)Ú3ra   u   ðŸ��©ÚaÚbÚcrQ   FrR   Úobject)r6   r7   ÚpdÚ	DataFramer   r   rG   Úread_csvrH   Z	to_pandasr   Zastyper8   Úassert_frame_equalrN   )r   Zpa_csvrZ   r?   ÚsrK   Údfr   r   r   Útest_get_handle_pyarrow_compatœ   s    
ÿ
z7TestCommonIOCapabilities.test_get_handle_pyarrow_compatc                 C   sÎ   t jt| jƒdd��}t j|dd�}W d   ƒ n1 s80    Y  t  t| jƒ¡}t ||¡ t jt| jƒdd��H}t|ƒ}t ||jdg ¡ t t  |¡|jdd … ¡ W d   ƒ n1 sÀ0    Y  d S )Né   )r[   T)Zignore_indexr   )	rh   rj   r   Údata1Úconcatr8   rk   ÚnextZiloc)r   Úreaderr0   r?   ÚitÚfirstr   r   r   Útest_iterator¯   s    ,z&TestCommonIOCapabilities.test_iteratorz#reader, module, error_class, fn_extr   ÚcsvÚtxtZxlrdZxlsxZpyarrowÚfeatherÚtablesÚh5ZdtaZsas7bdatÚjsonÚpicklec                 C   sÞ   t  |¡ tj tdd| ¡}d|› d�}d|› d�}d}d}	d	|› d
|› d�}
d|› d�}d|› d�}d|› �}t j|d|› d|› d|› d|	› d|
› d|› d|› d|› d�d�� ||ƒ W d   ƒ n1 sÐ0    Y  d S )NrZ   údoes_not_exist.úFile (b')?.+does_not_exist\.ú'? does not existú:\[Errno 2\] No such file or directory: '.+does_not_exist\.ú'zExpected object or valueú7path_or_buf needs to be a string file path or file-likeú#\[Errno 2\] File .+does_not_exist\.ú$ does not exist: '.+does_not_exist\.õ<   \[Errno 2\] æ²¡æœ‰é‚£ä¸ªæ–‡ä»¶æˆ–ç›®å½•: '.+does_not_exist\.ú?\[Errno 2\] File o directory non esistente: '.+does_not_exist\.ú+Failed to open local file.+does_not_exist\.ú(ú|ú)©Úmatch)r6   r7   r   r   r'   ÚHEREÚraises)r   rs   ÚmoduleÚerror_classÚfn_extr   Úmsg1Úmsg2Úmsg3Úmsg4Úmsg5Úmsg6Úmsg7Úmsg8r   r   r   Útest_read_non_existent»   s&    
ÿÿ
ÿ
4þz/TestCommonIOCapabilities.test_read_non_existentz#method, module, error_class, fn_extÚhtmlZparquetc                 C   sz   t  |¡ t g d¢g d¢g d¢dœ¡}tj tddd| ¡}t j|dd	�� |||ƒ W d   ƒ n1 sl0    Y  d S )
N)ro   é   é   )r�   rž   é   )rž   rŸ   rU   rc   rZ   Zmissing_folderr~   z@Cannot save file into a non-existent directory: .*missing_folderrŒ   )	r6   r7   rh   ri   r   r   r'   rŽ   r�   )r   Úmethodr�   r‘   r’   Zdummy_framer   r   r   r   Ú#test_write_missing_parent_directoryá   s    
þz<TestCommonIOCapabilities.test_write_missing_parent_directoryc                 C   sî   t  |¡ tj dd| ¡}| tddd„ ¡ d|› d�}d|› d	�}d
}	d}
d|› d|› d	�}d|› d	�}d|› d	�}d|› �}t j|d|› d|› d|	› d|
› d|› d|› d|› d|› d�d�� ||ƒ W d   ƒ n1 sà0    Y  d S )Nú~r~   r   c                 S   s   t j d| ¡S )Nr$   )r   r   r'   )Úxr   r   r   Ú<lambda>  rT   zJTestCommonIOCapabilities.test_read_expands_user_home_dir.<locals>.<lambda>r   r€   r�   r‚   z0Unexpected character found when decoding 'false'rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   )r6   r7   r   r   r'   Úsetattrr   r�   )r   rs   r�   r‘   r’   Zmonkeypatchr   r“   r”   r•   r–   r—   r˜   r™   rš   r   r   r   Útest_read_expands_user_home_dirü   s(    
ÿÿ
ÿ
4þz8TestCommonIOCapabilities.test_read_expands_user_home_dirzreader, module, path)ÚiorZ   rw   ziris.csv)r§   rZ   Zfixed_widthzfixed_width_format.txt)r§   rZ   Úexcelz
test1.xlsx)r§   rZ   ry   zfeather-0_3_1.feather)r§   rZ   Z
legacy_hdfzdatetimetz_object.h5zTODO(infer_string)F)ÚreasonÚstrict)Zmarks)r§   rZ   Ústatazstata10_115.dta)r§   ÚsasrZ   ztest1.sas7bdat)r§   r|   rZ   ztsframe_v012.json)r§   rZ   r}   zcategorical.0.25.0.picklec                 C   sR   t  |¡ ||Ž }t|ƒ}||ƒ}||ƒ}| d¡rBt ||¡ nt ||¡ d S )Nz.pickle)r6   r7   r	   Úendswithr8   Zassert_categorical_equalrk   )r   rs   r�   r   ÚdatapathÚmypathr0   r?   r   r   r   Útest_read_fspath_all'  s    "

z-TestCommonIOCapabilities.test_read_fspath_allz"writer_name, writer_kwargs, moduleÚto_csvÚto_excelÚengineZopenpyxlÚ
to_featherÚto_htmlÚto_jsonÚto_latexÚ	to_pickleÚto_stataZ
time_stampz2019-01-01 00:00c                 C   st  |dv rt  d¡ t d¡}t d¡}t dddgi¡}|�� }|�ú}t  |¡ t|ƒ}	t||ƒ}
|
|fi |¤Ž |
|	fi |¤Ž t|dƒ�’}t|dƒ�f}|d	krÔtj	|fi |¤Ž}tj	|fi |¤Ž}t 
||¡ n| ¡ }| ¡ }||ksðJ ‚W d   ƒ n1 �s0    Y  W d   ƒ n1 �s&0    Y  W d   ƒ n1 �sF0    Y  W d   ƒ n1 �sf0    Y  d S )
N)r·   Zjinja2ÚstringÚfspathÚAro   r�   rQ   r²   )r6   r7   r8   r9   rh   ri   r	   Úgetattrr:   Ú
read_excelrk   rW   )r   Zwriter_nameZwriter_kwargsr�   Úp1Úp2rm   rº   r»   r¯   ÚwriterZf_strZf_pathr0   r?   r   r   r   Útest_write_fspath_allV  s&    




z.TestCommonIOCapabilities.test_write_fspath_allc           	   	   C   sÈ   t  d¡ t dddgi¡}t d¡}t d¡}|�t}|�P}t|ƒ}|j|dd� |j|dd� tj|dd�}tj|dd�}W d   ƒ n1 s�0    Y  W d   ƒ n1 s®0    Y  t 	||¡ d S )	Nrz   r¼   ro   r�   rº   r»   r%   )Úkey)
r6   r7   rh   ri   r8   r9   r	   Zto_hdfÚread_hdfrk   )	r   rm   r¿   rÀ   rº   r»   r¯   r0   r?   r   r   r   Útest_write_fspath_hdf5}  s    


Jz/TestCommonIOCapabilities.test_write_fspath_hdf5N)8r   r   r   rp   r!   r"   r)   ÚtdZ
skip_if_nor-   r1   r;   r6   ÚmarkÚparametrizeÚ
path_typesr@   Ústrr	   r   rL   rO   r]   rn   rv   rh   rj   ÚFileNotFoundErrorÚread_fwfr¾   Úread_featherÚOSErrorrÄ   Ú
read_stataÚread_sasÚ	read_jsonÚread_pickler›   ri   r±   rµ   r²   r´   Z
to_parquetr¹   r¶   r¸   r¡   Z
read_tabler¦   ÚparamZxfailr°   Úto_datetimerÂ   rÅ   r   r   r   r   r   ;   sÊ   	


÷þ
øþ
öþ


ý
ýû


ýèþ!
øþ
r   c                 C   s   | ddddƒS )Nr§   rZ   rw   ztest_mmap.csvr   )r®   r   r   r   Ú	mmap_file’  s    rÕ   c                   @   sX   e Z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¡dd„ ƒƒZ
dS )ÚTestMMapWrapperc                 C   sÔ   t dƒ}dd„ |_tƒ r"d}t}n
d}tj}tj||d�� t 	|d¡ W d   ƒ n1 s\0    Y  t
|dd	��}W d   ƒ n1 sˆ0    Y  d
}tjt|d�� t 	|d¡ W d   ƒ n1 sÆ0    Y  d S )NzI am not a filec                   S   s   dS )Néÿÿÿÿr   r   r   r   r   r¤   š  rT   z;TestMMapWrapper.test_constructor_bad_file.<locals>.<lambda>zThe parameter is incorrectz
[Errno 22]rŒ   TrV   ©ÚencodingzI/O operation on closed file)r   Úfilenor   rÎ   ÚmmapÚerrorr6   r�   r   Z_maybe_memory_mapr:   Ú
ValueError)r   rÕ   Znon_fileÚmsgÚerrÚtargetr   r   r   Útest_constructor_bad_file˜  s    
*z)TestMMapWrapper.test_constructor_bad_filec              
   C   sà   t |dd��À}| ¡ }tj|dddd��†}|j}t|jjtjƒsDJ ‚|D ] }t|ƒ}| 	¡ | 	¡ ksHJ ‚qHt
jtdd�� t|ƒ W d   ƒ n1 s–0    Y  W d   ƒ n1 s´0    Y  W d   ƒ n1 sÒ0    Y  d S )NrV   rØ   rM   T)rS   Ú
memory_mapz^$rŒ   )r:   Ú	readlinesr   rG   rH   Ú
isinstanceÚbufferrÛ   rr   Ústripr6   r�   ÚStopIteration)r   rÕ   rà   ÚlinesÚwrappersÚwrapperÚlineÚ	next_liner   r   r   Ú	test_next®  s    ÿzTestMMapWrapper.test_nextc              	   C   s°   t  ¡ �”}tjdt d¡ d¡ t tdƒ¡t dd„ t	dƒD ƒ¡d�}| 
|¡ tjtd	d
�� tj|dd� W d   ƒ n1 s„0    Y  W d   ƒ n1 s¢0    Y  d S )Nçš™™™™™ñ?éx   ©é   rŸ   ÚABCDc                 S   s   g | ]}d |› �‘qS ©zi-r   ©Ú.0Úir   r   r   Ú
<listcomp>Ä  rT   z7TestMMapWrapper.test_unknown_engine.<locals>.<listcomp>rñ   ©ÚcolumnsÚindexzUnknown enginerŒ   Zpyt)r³   )r8   r9   rh   ri   ÚnpÚarangeÚreshapeÚIndexÚlistÚranger±   r6   r�   rÝ   rj   ©r   r   rm   r   r   r   Útest_unknown_engine¿  s    
ý
z#TestMMapWrapper.test_unknown_enginec              	   C   sŽ   t  ¡ �r}tjdt d¡ d¡ t tdƒ¡t dd„ t	dƒD ƒ¡d�}|j
|d	d
� t  |tj|dd�¡ W d  ƒ n1 s€0    Y  dS )z\
        'encoding' shouldn't be passed to 'open' in binary mode.

        GH 35058
        rî   rï   rð   rò   c                 S   s   g | ]}d |› �‘qS ró   r   rô   r   r   r   r÷   Ô  rT   z4TestMMapWrapper.test_binary_mode.<locals>.<listcomp>rñ   rø   zw+br4   r   ©Z	index_colN)r8   r9   rh   ri   rû   rü   rý   rþ   rÿ   r   r±   rk   rj   r  r   r   r   Útest_binary_modeÊ  s    
ýz TestMMapWrapper.test_binary_moderÙ   zutf-16zutf-32Úcompression_Úbz2Úxzc              	   C   sæ   t jdt d¡ d¡ t  tdƒ¡t  dd„ tdƒD ƒ¡d�}t 	¡ �Œ}t 
t¡�  |j|||d	� W d
  ƒ n1 sx0    Y  d}tjt|d��  t j|||d	� W d
  ƒ n1 sº0    Y  W d
  ƒ n1 sØ0    Y  d
S )zš
        bz2 and xz do not write the byte order mark (BOM) for utf-16/32.

        https://stackoverflow.com/questions/55171439

        GH 35681
        rî   rï   rð   rò   c                 S   s   g | ]}d |› �‘qS ró   r   rô   r   r   r   r÷   æ  rT   z@TestMMapWrapper.test_warning_missing_utf_bom.<locals>.<listcomp>rñ   rø   )r=   rÙ   NzHUTF-\d+ stream does not start with BOM|'utf-\d+' codec can't decode byterŒ   )rh   ri   rû   rü   rý   rþ   rÿ   r   r8   r9   Zassert_produces_warningÚUnicodeWarningr±   r6   r�   ÚUnicodeErrorrj   )r   rÙ   r  rm   r   rÞ   r   r   r   Útest_warning_missing_utf_bomÙ  s    
ý
.ÿz,TestMMapWrapper.test_warning_missing_utf_bomN)r   r   r   rá   rí   r  r  r6   rÇ   rÈ   r
  r   r   r   r   rÖ   —  s   rÖ   c                   C   s‚   t  d¡sJ ‚t  d¡sJ ‚t  d¡r*J ‚t  d¡r8J ‚t  d¡rFJ ‚t  d¡rTJ ‚t  d¡rbJ ‚t  d¡rpJ ‚t  d	¡s~J ‚d S )
Nzgcs://pandas/somethingelse.comzgs://pandas/somethingelse.comzhttp://pandas/somethingelse.comzrandom:pandas/somethingelse.comz/local/pathzrelative/local/pathzthis is not fsspec://urlz({'url': 'gs://pandas/somethingelse.com'}z#RFC-3986+compliant.spec://something)r   Zis_fsspec_urlr   r   r   r   Útest_is_fsspec_urlõ  s    r  Úformatrw   r|   c              	   C   s  t jdt d¡ d¡ t  tdƒ¡t  dd„ tdƒD ƒ¡d�}t 	¡ � }t
|d	d
d��$}t|d| › �ƒ|ƒ W d   ƒ n1 s€0    Y  t
|d
d��2}| dkr°t j|dd�}n
t  |¡}W d   ƒ n1 sÎ0    Y  W d   ƒ n1 sì0    Y  t ||¡ d S )Nrî   rï   rð   rò   c                 S   s   g | ]}d |› �‘qS ró   r   rô   r   r   r   r÷   
  rT   z(test_codecs_encoding.<locals>.<listcomp>rñ   rø   rB   rV   )r5   rÙ   Zto_rØ   rw   r   r  )rh   ri   rû   rü   rý   rþ   rÿ   r   r8   r9   r:   r½   rj   rÑ   rk   )r  r?   r   rH   rm   r   r   r   Útest_codecs_encoding  s    ý
2Fr  c               
   C   sB  t jdt d¡ d¡ t  tdƒ¡t  dd„ tdƒD ƒ¡d�} t 	¡ �Ú}t
|d	ƒ�H}t d
¡|ƒ�}|  |¡ W d   ƒ n1 s‚0    Y  W d   ƒ n1 s 0    Y  t
|dƒ�L}t d
¡|ƒ�}t j|dd�}W d   ƒ n1 sè0    Y  W d   ƒ n1 �s0    Y  W d   ƒ n1 �s(0    Y  t | |¡ d S )Nrî   rï   rð   rò   c                 S   s   g | ]}d |› �‘qS ró   r   rô   r   r   r   r÷     rT   z1test_codecs_get_writer_reader.<locals>.<listcomp>rñ   rø   r3   rV   rQ   r   r  )rh   ri   rû   rü   rý   rþ   rÿ   r   r8   r9   r:   ÚcodecsÚ	getwriterr±   Ú	getreaderrj   rk   )r?   r   rH   Úencodedrm   r   r   r   Útest_codecs_get_writer_reader  s    ý
Flr  zio_class,mode,msgÚtz*a bytes-like object is required, not 'str're   z%string argument expected, got 'bytes'c              	   C   sª   t jdt d¡ d¡ t  tdƒ¡t  dd„ tdƒD ƒ¡d�}| ƒ �R}tj	t
|d	��$ |j|d
|› �d� W d   ƒ n1 s~0    Y  W d   ƒ n1 sœ0    Y  d S )Nrî   rï   rð   rò   c                 S   s   g | ]}d |› �‘qS ró   r   rô   r   r   r   r÷   6  rT   z*test_explicit_encoding.<locals>.<listcomp>rñ   rø   rŒ   rB   r4   )rh   ri   rû   rü   rý   rþ   rÿ   r   r6   r�   Ú	TypeErrorr±   )Zio_classr5   rÞ   r?   rå   r   r   r   Útest_explicit_encoding(  s    ýr  Úencoding_errors)Nrª   Úreplacec              	   C   s,  d}d}|dkr<d| d |d  d | }t tjdd�}n.d	|d  d
 | d | d }t tjdd�}t ¡ �¤}t|ƒ}| |¡ | dkrÊtj	t
|d�� ||| d� W d   ƒ n1 s¾0    Y  n>||| d�}|j| d�}	tj|	|	gi|	d gd�}
t ||
¡ W d   ƒ n1 �s0    Y  d S )Nz'utf-8' codec can't decode byteó   ärw   ó   ,ó   
r�   r   r  s   {"s   ": {"s   ":"s   "}}rú   )Zorientr  rŒ   )r  ©Úerrors)rú   )r   rh   rj   rÑ   r8   r9   r   Úwrite_bytesr6   r�   ÚUnicodeDecodeErrorÚdecoderi   rk   )r  r  rÞ   Zbad_encodingÚcontentrs   r   Úfilerm   Údecodedr?   r   r   r   Útest_encoding_errors=  s<    ÿþýüûúÿ	

,r#  c               	   C   sj   t  ¡ �N} tjtdd��  tj| ddd� W d   ƒ n1 s>0    Y  W d   ƒ n1 s\0    Y  d S )Nzunknown error handler namerŒ   rB   Úbadr  )r8   r9   r6   r�   ÚLookupErrorr   rG   r   r   r   r   Útest_bad_encdoing_errors`  s    
r&  c                  C   sL   t jtdd��*} t d¡ | jtjks*J ‚W d   ƒ n1 s>0    Y  d S )Nz\[Errno 2\]rŒ   Zdoesnt_exist)r6   r�   rË   rh   rj   ÚerrnoÚENOENT)rß   r   r   r   Útest_errno_attributeg  s    
r)  c               	   C   sh   t jtdd��F tƒ � } tj| ddd� W d   ƒ n1 s<0    Y  W d   ƒ n1 sZ0    Y  d S )NrÚ   rŒ   rQ   T)râ   )r6   r�   r   r   r   rG   )rå   r   r   r   Útest_fail_mmapn  s    r*  c               
   C   s    G dd„ dƒ} t jtdd��p tƒ �J}t |d¡�}|j | ƒ ¡ W d   ƒ n1 sV0    Y  W d   ƒ n1 st0    Y  W d   ƒ n1 s’0    Y  d S )Nc                   @   s   e Zd Zdd„ ZdS )z&test_close_on_error.<locals>.TestErrorc                 S   s   t dƒ‚d S )NÚtest)rÎ   r   r   r   r   Úclosew  s    z,test_close_on_error.<locals>.TestError.closeN)r   r   r   r,  r   r   r   r   Ú	TestErrorv  s   r-  r+  rŒ   rQ   )r6   r�   rÎ   r   r   rG   Zcreated_handlesÚappend)r-  rå   rK   r   r   r   Útest_close_on_errort  s
    r/  rs   c                 C   s6   t ƒ �}t | |¡ W d   ƒ n1 s(0    Y  d S r   )r   r}   Údump)rs   rå   r   r   r   Útest_pickle_reader€  s    r1  )Jr   r  r'  Ú	functoolsr   r§   r   r   r   rÛ   r   Úpathlibr   r}   rC   Únumpyrû   r6   Zpandas.compatr   Zpandas.compat.pyarrowr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrÆ   Zpandasrh   Zpandas._testingZ_testingr8   Zpandas.io.commonÚcommonr   rÇ   ÚfilterwarningsZ
pytestmarkr	   rÊ   rÉ   Zpy.pathr   r+   r.  ÚImportErrorr   r*   ÚdirnameÚ__file__rŽ   r   ZfixturerÕ   rÖ   r  rÈ   r  r  r  r#  r&  r)  r*  r/  rj   rÌ   r¾   rÍ   rÄ   rÏ   rÐ   rÑ   rÒ   r1  r   r   r   r   Ú<module>   s„   ÿ
  Y
^
þþ
!÷þ