o
    }¨ÊhD  ã                   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZddlmZ ddlmZ ddl	m
Z
mZmZmZ ddl mZ z
d dlmZmZ W n eyQ   d	d
„ Zdd„ ZY nw zd dlmZ W n eye   dZY nw ddd„ZG dd„ de
ƒZG dd„ dƒZG dd„ deƒZdS )é    Né   )Údata01)Ú	zipdata01é   )ÚABCÚPathÚPurePathÚFileNotFoundError)ÚResourceReader)Úmodules_setupÚmodules_cleanupc                   C   s   t j ¡ fS ©N)ÚsysÚmodulesÚcopy© r   r   úP/var/www/html/env/lib/python3.10/site-packages/importlib_resources/tests/util.pyr      s   r   c                 C   s:   dd„ t j ¡ D ƒ}t j ¡  t j |¡ t j | ¡ d S )Nc                 S   s"   g | ]\}}|  d ¡r||f‘qS )z
encodings.)Ú
startswith)Ú.0ÚkÚvr   r   r   Ú
<listcomp>   s    ÿz#modules_cleanup.<locals>.<listcomp>)r   r   ÚitemsÚclearÚupdate)Ú
oldmodulesÚ	encodingsr   r   r   r      s   
r   )Ú
ModuleSpecTr   c           	         sn   G ‡ ‡‡fdd„dt ƒ}d}t |¡}td u r$||_d|_|r"g |_|S |ƒ }t||d|d�}||_||_|S )Nc                       sH   e Zd Zdd„ Z‡fdd„Z‡fdd„Z‡ ‡fdd„Z‡ ‡fd	d
„ZdS )zcreate_package.<locals>.Readerc                 S   s   | S r   r   ©ÚselfÚpackager   r   r   Úget_resource_reader.   s   z2create_package.<locals>.Reader.get_resource_readerc                    ó   || _ tˆ tƒr
ˆ ‚ˆ S r   ©Ú_pathÚ
isinstanceÚ	Exception©r   Úpath)Úfiler   r   Úopen_resource1   ó   
z,create_package.<locals>.Reader.open_resourcec                    r"   r   r#   )r   Úpath_)r(   r   r   Úresource_path8   r+   z,create_package.<locals>.Reader.resource_pathc                    sJ   || _ tˆtƒr
ˆ‚ˆ D ]}| d¡}t|ƒdkr"|d |kr" dS qdS )Nú/r   r   TF)r$   r%   r&   ÚsplitÚlen)r   r,   ÚentryÚparts©Úcontentsr(   r   r   Úis_resource?   s   

€z*create_package.<locals>.Reader.is_resourcec                 3   s$   � t ˆtƒrˆ‚ˆ D ]}|V  q
d S r   )r%   r&   )r   r1   r3   r   r   r4   I   s   €
ÿz'create_package.<locals>.Reader.contentsN)Ú__name__Ú
__module__Ú__qualname__r!   r*   r-   r5   r4   r   ©r4   r)   r(   r   r   ÚReader-   s    
r:   Útestingpackagezdoes-not-exist)ÚoriginÚ
is_package)	r
   ÚtypesÚ
ModuleTyper   r6   Ú__file__Ú__path__Ú__spec__Ú
__loader__)	r)   r(   r=   r4   r:   ÚnameÚmoduleÚloaderÚspecr   r9   r   Úcreate_package,   s$   #

ùýrH   c                   @   s°   e Zd Zejdd„ ƒZdd„ Zdd„ Zdd„ Ze	 
ejd	k d
¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Ze	 
ejdk d¡dd„ ƒZe	 
ejdk d¡dd„ ƒZdd„ ZdS ) ÚCommonTestsc                 C   s   t ‚r   )ÚNotImplementedError)r   r    r(   r   r   r   Úexecuteh   s   zCommonTests.executec                 C   s   |   tjd¡ d S ©Nú
utf-8.file)rK   r   r6   ©r   r   r   r   Útest_package_namel   s   zCommonTests.test_package_namec                 C   s   |   td¡ d S rL   ©rK   r   rN   r   r   r   Útest_package_objectp   s   zCommonTests.test_package_objectc                 C   s   d}|   t|¡ d S rL   rP   r'   r   r   r   Útest_string_patht   s   zCommonTests.test_string_path)é   é   zrequires os.PathLike supportc                 C   s   t dƒ}|  t|¡ d S rL   )r   rK   r   r'   r   r   r   Útest_pathlib_pathy   s   zCommonTests.test_pathlib_pathc                 C   sN   t tƒ}|jd }|  t¡� |  t|¡ W d   ƒ d S 1 s w   Y  d S rL   )r   r@   ÚparentÚassertRaisesÚ
ValueErrorrK   r   )r   r(   Ú	full_pathr   r   r   Útest_absolute_path   s
   
"ÿzCommonTests.test_absolute_pathc                 C   ó<   |   t¡� |  td¡ W d   ƒ d S 1 sw   Y  d S )Nz../data01/utf-8.file)rW   rX   rK   r   rN   r   r   r   Útest_relative_path†   ó   "ÿzCommonTests.test_relative_pathc                 C   s   t jtj= |  tjd¡ d S rL   )r   r   r   r6   rK   rN   r   r   r   Ú$test_importing_module_as_side_effect‹   s   
z0CommonTests.test_importing_module_as_side_effectc                 C   r[   rL   )rW   Ú	TypeErrorrK   r6   rN   r   r   r   Útest_non_package_by_name�   r]   z$CommonTests.test_non_package_by_namec                 C   sF   |   t¡� tjd }|  |d¡ W d   ƒ d S 1 sw   Y  d S )Nzimportlib_resources.tests.utilrM   )rW   r_   r   r   rK   )r   rE   r   r   r   Útest_non_package_by_package•   s   
"þz'CommonTests.test_non_package_by_package)rS   zNo ResourceReader in Python 2c                 C   s8   t  d¡}t|tƒ d�}|  |d¡ |  |jjd¡ d S ©Ns   Hello, world!©r)   r(   rM   )ÚioÚBytesIOrH   r	   rK   ÚassertEqualrC   r$   )r   Ú
bytes_datar    r   r   r   Útest_resource_opener›   s   
z CommonTests.test_resource_openerc                 C   s:   t  d¡}t}t||d�}|  |d¡ |  |jjd¡ d S rb   )rd   re   r@   rH   rK   rf   rC   r$   )r   rg   r(   r    r   r   r   Útest_resource_path¢   s
   
zCommonTests.test_resource_pathc                 C   sL   t tƒ tƒ d�}|  t¡� |  |d¡ W d   ƒ d S 1 sw   Y  d S )Nrc   rM   )rH   r	   rW   rK   r   r   r   r   Útest_useless_loaderª   s   ÿ"ÿzCommonTests.test_useless_loaderN)r6   r7   r8   ÚabcÚabstractmethodrK   rO   rQ   rR   ÚunittestÚskipIfr   Úversion_inforU   rZ   r\   r^   r`   ra   rh   ri   rj   r   r   r   r   rI   f   s$    



rI   c                   @   s0   e Zd ZdZedd„ ƒZedd„ ƒZdd„ ZdS )ÚZipSetupBaseNc                 C   s>   t | jjƒ}|j}t|d ƒ| _tj | j¡ t	 
d¡| _d S )Nzziptestdata.zipÚziptestdata)r   Ú
ZIP_MODULEr@   rV   ÚstrÚ	_zip_pathr   r(   ÚappendÚ	importlibÚimport_moduleÚdata)ÚclsÚ	data_pathÚdata_dirr   r   r   Ú
setUpClass´   s
   zZipSetupBase.setUpClassc                 C   sx   z	t j | j¡ W n	 ty   Y nw zt j| j= t j| jj= W n	 t	y)   Y nw z| `| `W d S  t
y;   Y d S w r   )r   r(   Úremovert   rX   Úpath_importer_cacher   rx   r6   ÚKeyErrorÚAttributeError)ry   r   r   r   ÚtearDownClass¼   s"   ÿ
ÿ
ÿzZipSetupBase.tearDownClassc                 C   s   t ƒ }| jtg|¢R Ž  d S r   )r   Ú
addCleanupr   )r   r   r   r   r   ÚsetUpÏ   s   zZipSetupBase.setUp)r6   r7   r8   rr   Úclassmethodr|   r�   rƒ   r   r   r   r   rp   ±   s    

rp   c                   @   s   e Zd ZeZdS )ÚZipSetupN)r6   r7   r8   r   rr   r   r   r   r   r…   Ô   s    r…   )Tr   )rk   rv   rd   r   r>   rm   Ú r   r   Ú_compatr   r   r   r	   r
   Útest.supportr   r   ÚImportErrorÚimportlib.machineryr   rH   rI   rp   r…   r   r   r   r   Ú<module>   s2    ûÿ
:K#