U
    ?h                     @   s   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Zd dlZ	dd Z
dd Zdd Zd	d
 Zdd Zdd ZdZdd Zdd Zdd Zdd Zdd ZdS )    N)mockc                  C   s   t d} t d}| | jtddks0tz|j t W n tk
rT   Y nX t|t j	sftz|j t W n tk
r   Y nX d S )Nmathanything_not_realr   ư>)
lazyloadsinpipytestapproxAssertionErrorModuleNotFoundError
isinstanceDelayedImportErrorModule)r   r    r   T/var/www/html/venv/lib/python3.8/site-packages/lazy_loader/tests/test_lazy_loader.pytest_lazy_import_basics   s    



r   c               	   C   s~   t t td} W 5 Q R X dtjks.tttjd tt ksHtt	| t
jjsZtdtjkshttjd | ksztd S )Nzhtml.parserhtml)r
   ZwarnsRuntimeWarningr   r   sysmodulesr   typer   	importlibutil_LazyModule)hpr   r   r   test_lazy_import_subpackages"   s    r   c                  C   s   t d} t d}t| tjs$tdtjks2tt|t jsBtdtjksPtt	
d t d}t|tjsttdtjkst|j t|tjstdtjkstd S )Nr   r   numpy)r   r   r   types
ModuleTyper   r   r   r   r
   importorskipr	   )r   r   npr   r   r   &test_lazy_import_impact_on_sys_modules,   s    



r"   c                  C   sr   t d} t d}t| t js<| | jtddks<tt|t jrnz|j t W n t	k
rl   Y nX d S )Nr   Zscipyr   r   )
r   r   r   r   r   r	   r
   r   r   r   )r!   spr   r   r   test_lazy_import_nonbuiltinsA   s    


r$   c                  C   s   d} ddg}ddgi}t j| ||d}d}t|i | t j| ||d d d d}| | ks`t| D ] \}}|d k	rh|| |kshtqhd S )	NZmymodZmysubmoduleZanothersubmoduleZnot_real_submodZsome_var_or_func)attachnamesubmodsmyallzA__getattr__, __lazy_dir__, __all__ = attach(name, submods, myall))r%   r&   r'   r(   __getattr____lazy_dir____all__)r   r%   execkeysr   items)r&   r'   r(   Zloclssexpectedkvr   r   r   test_lazy_attachN   s,    
	r3   c                  C   sP   ddl m}  t| jtjstt| jtjs0tddlm} t|tjsLtd S )Nr   fake_pkg)	some_func)lazy_loader.testsr5   r   r6   r   FunctionTyper   Z$lazy_loader.tests.fake_pkg.some_func)r5   r6   r   r   r   %test_attach_same_module_and_attr_namek   s
    r9   zg
from . import rank
from ._gaussian import gaussian
from .edges import sobel, scharr, prewitt, roberts
c                 C   s`   | d }| t tdt|\}}}ddddddh}t| t|  krV|ks\n td S )	Nstub.pyiZ	my_moduleZgaussianZsobelZscharrZprewittZrobertsZrank)
write_text	FAKE_STUBr   attach_stubstrsetr   )tmp_pathstub_getZ_dirZ_allexpectr   r   r   test_stub_loading   s
    
rD   c                  C   s\   ddl m}  t| j| j}|\}}}|| jks4t| |  ksFt|d| j	ksXtd S )Nr   r4   r6   )
r7   r5   r   r=   __name____file__r+   r   r*   r6   )r5   Z	from_stubZstub_getterZstub_dirZstub_allr   r   r   test_stub_loading_parity   s    
rG   c              	   C   s   | d }| d tjtdd tdt| W 5 Q R X tjtdd tdd W 5 Q R X | d }| d	 tjtd
d tdt| W 5 Q R X d S )Nr:   zfrom ..mod import func
z(Only within-module imports are supported)matchr&   z*Cannot load imports from non-existent stubz
not a filez	stub2.pyizfrom .mod import *
z.*does not support star import)r;   r
   raises
ValueErrorr   r=   r>   )r@   rA   Zstub2r   r   r   test_stub_loading_errors   s    

rK   c               	   C   s   t jdd k	} | rdnd}td| dr}d|_tjddd	}t|tj	sTt
tjdd
d	}||jtddks~t
tjddd	}t|tj	st
W 5 Q R X tt tjdd
d	 W 5 Q R X d S )Nzimportlib.metadata._r   zmetadata.versionz1.0.0r   zsomepkg >= 2.0)requirezsomepkg >= 1.0r   r   )r   r   	find_specr   patchZreturn_valuer   r   r   r   r   r   r	   r
   r   rI   rJ   )Zhave_importlib_metadatadotversionr   r   r   r   test_require_kwarg   s    rS   c                   C   s0   t d ttjtjtj	t
dg d S )Nr   zimport_np_parallel.py)r
   r    
subprocessrunr   
executableospathjoindirnamerF   r   r   r   r   test_parallel_load   s    
r[   )r   rW   rT   r   r   Zunittestr   r
   Zlazy_loaderr   r   r   r"   r$   r3   r9   r<   rD   rG   rK   rS   r[   r   r   r   r   <module>   s&   

