o
    ;&i                     @   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sJ z|j t  ty'   Y nw t|t j	s0J z|j t  ty@   Y d S w )Nmathanything_not_realr   ư>)
lazyloadsinpipytestapproxAssertionErrorModuleNotFoundError
isinstanceDelayedImportErrorModule)r   r    r   MC:\wamp64\www\opt\env\Lib\site-packages\lazy_loader/tests/test_lazy_loader.pytest_lazy_import_basics   s    

r   c                  C   s   t t td} W d    n1 sw   Y  dtjv s!J ttjd tt ks.J t| t	j
js7J dtjv s>J tjd | ksGJ d S )Nzhtml.parserhtml)r
   ZwarnsRuntimeWarningr   r   sysmodulestyper   	importlibutil_LazyModule)hpr   r   r   test_lazy_import_subpackages"   s   r   c                  C   s   t d} t d}t| tjsJ dtjv sJ t|t js!J dtjvs(J t	d t d}t|tjs:J dtjv sAJ |j
 t|tjsLJ dtjv sSJ d S )Nr   r   numpy)r   r   r   types
ModuleTyper   r   r   r
   importorskipr	   )r   r   npr   r   r   &test_lazy_import_impact_on_sys_modules,   s   



r"   c                  C   sn   t d} t d}t| t js| | jtddksJ t|t jr5z|j t  t	y4   Y d S w 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s0J | D ]\}}|d urD|| |ksDJ q4d 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keysitems)r&   r'   r(   Zloclssexpectedkvr   r   r   test_lazy_attachN   s0   
	r3   c                  C   sP   ddl m}  t| jtjsJ t| jtjsJ ddlm} t|tjs&J d S )Nr   fake_pkg)	some_func)lazy_loader.testsr5   r   r6   r   FunctionTypeZ$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   sZ   | d }| t tdt|\}}}h d}t| t|  kr(|ks+J  J d S )Nstub.pyiZ	my_module>   ZgaussianZrobertsZsobelZprewittZrankZscharr)
write_text	FAKE_STUBr   attach_stubstrset)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sJ | |  ks#J |d| jks,J d S )Nr   r4   r6   )	r7   r5   r   r=   __name____file__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 d    n1 s#w   Y  tjtdd tdd W d    n1 s@w   Y  | d }| d	 tjtd
d tdt| W d    d S 1 siw   Y  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 u} | rdnd}td| d>}d|_tjddd	}t|tj	s*J tjdd
d	}|
|jtddks?J tjddd	}t|tj	sNJ W d    n1 sXw   Y  tt tjdd
d	 W d    d S 1 suw   Y  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   patchreturn_valuer   r   r   r   r   r	   r
   r   rI   rJ   )Zhave_importlib_metadatadotversionr   r   r   r   test_require_kwarg   s   "rT   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   rX   rU   r   r   Zunittestr   r
   Zlazy_loaderr   r   r   r"   r$   r3   r9   r<   rD   rG   rK   rT   r\   r   r   r   r   <module>   s(    

